正则表达式:在“标题”数据库字段中匹配先生、女士等

2024-04-11

我需要构建一个正则表达式,它从数据库的标题字段获取其文本字符串。 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(使用前将#替换为@)

正则表达式:在“标题”数据库字段中匹配先生、女士等 的相关文章

随机推荐