逐步构建您的正则表达式:
你想要一切,除了它是一个“独立的”上午或下午:
[b-oq-z]{1}\.[a-ln-z]{1}
匹配所有x.y
非a.#
or p.#
or格式的东西#.m
但是,您也想念a.a
, a.b
, a.c
...。所以添加案例:
a\.[^m]
(对于p
-case相同p\.[^m]
:)
a.m
有效,当 a: 前面有字符时kra.m, tra.m
。同样适用于p.m
:erp.m
现在,我们缺少字符串,其中第二部分更长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)
在 Debuggex 上实时编辑
注意:这不会为您提供 exakt 匹配组。但是由于您在 SQL 查询中使用它,因此只需要匹配的情况。(ark.m
将匹配k.m
- 但它符合您的规范)
请记住:创建正则表达式时,没有正确的解决方案:只有有效的解决方案,而不是有效的解决方案。a\.[^m]|p\.[^m]
等于[ap]\.[^m]
,这会将模式减少一个或。
当满足 2 个条件时,您已经找到了完美的正则表达式模式: