我需要构建一个正则表达式,它从数据库的标题字段获取其文本字符串。 IE。这完整的字符串正在搜索的是:Mr.
or Ms.
or Dr.
or Sr.
etc.
不幸的是,这个字段是一个自由字段,任何东西都可以写入其中。例如。:M.
; A
; CFO
etc.
该表达式需要匹配所有内容,除了:Mr.
; Ms.
; Dr.
; Sr.
(注意:该列表有点长,但为了简单起见,我保持简短。)
到目前为止我已经尝试过:
这是我在另一个领域成功使用的:
^(?!(VIP)$).*
(这将匹配除“VIP”之外的所有字符串)
我将该表达式重写为如下所示:
^(?!(Mr.|Ms.|Dr.|Sr.)$).*
不幸的是这没有用。我认为这是因为“。” (点)是正则表达式中的保留符号,需要特殊处理。
我也尝试过:
^(?!(Mr\.|Ms\.|Dr\.|Sr\.)$).*
但也没有运气。
我在论坛中四处查看并测试了其他一些解决方案,但找不到任何适合我的解决方案。
我想知道如何构建公式来搜索完整(短)字符串并匹配所有内容except“先生。”等等。如有任何帮助,我们将不胜感激!
注意:我的问题可能看起来不寻常,并且似乎有许多开放式结局和可能的错误。然而,我的应用程序的其余部分正在处理这些开放端。请相信我。
如果你不希望你的字符串start使用这些前缀之一,然后执行以下操作:
^(?!([MDS]r|Ms)\.).*$
上面只是确保字符串的开头 (^
) is not后跟您列出的前缀之一。 (你甚至不需要.*$
但这是为了防止您使用某些需要完全匹配的引擎。)
如果您希望字符串没有这些前缀anywhere, 然后做:
^(.(?!([MDS]r|Ms)\.))*$
上述确保每个字符 (.
) is not后跟列出的前缀之一,一直到最后(所以$
is在这一点上是必要的)。
我刚刚读到您的前缀列表可能更长,所以让我扩展一下以供您添加:
^(.(?!(Mr|Ms|Dr|Sr)\.))*$
You say entirely的前缀?然后就这样做:
^(?!Mr|Ms|Dr|Sr)\.$
如果你想让点有条件:
^(?!Mr|Ms|Dr|Sr)\.?$
^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)