构建一步您正则表达式的步骤:
你想要的一切,但它的“独立”上午或下午:
[b-oq-z]{1}\.[a-ln-z]{1}
相匹配的格式x.y
不是a.#
或p.#
或#.m
的一切
然而,你错过了a.a
,a.b
,a.c
......也。这样添加的情况:
a\.[^m]
(同为p
-cases:p\.[^m]
)
a.m
是有效的,当在所述一个前字符:kra.m, tra.m
。这同样适用于p.m
:erp.m
[a-z]{1}[ap]\.m
覆盖该condtion。
现在,我们缺少的字符串,其中第二部分是长:a.mod, p.markt
:
最后只是.m
结束,但具有不同的前缀的那些缺少:
这个现在应该涵盖所有可能的使用情况。简单的合并与模式OR(|
)和你做:
([b-oq-z]{1}\.[a-ln-z]{1}|a\.[^m]|p\.[^m]|[a-z]{1}[ap]\.m|[ap]\.m[a-z]+|[b-oq-z]{1}\.m)
Edit live on Debuggex
注意:这会不会给你EXAKT比赛组。但是,由于您仅在一个SQL查询中使用它,因此需要匹配。 (ark.m
将k.m
匹配 - 但它满足您的规格)
记住:当创建一个正则表达式,没有权解决方案:只要做事的人,而不是做事的人。 a\.[^m]|p\.[^m]
等于[ap]\.[^m]
,这将使模式减少一个OR。
你已经找到了完美的正则表达式点模式,当两个条件都满足:
为什么不只是添加额外的'不喜欢%a.m.%'条件? –
@Michael Berkowski:因为我需要可能包含a.m.的列,但也包含要返回的[a-z] \。[a-z]的其他实例。 –