gpt4 book ai didi

正则表达式匹配一个单词,但前提是它之前或之后没有另一个特定单词

转载 作者:行者123 更新时间:2023-12-02 00:58:31 27 4
gpt4 key购买 nike

需要一个 Regex 字符串来处理自定义 Exchange DLP“敏感信息”类型。

即匹配 Smith 但不是 John Smith 或 Smith John

(?i)(?<!John\s)Smith 似乎为“John Smith”工作,但我不相信它是 100% 有效的。

(?i)(Smith.*\s(?!John)) 似乎适用于“Smith John”,但如果后跟空格或换行则无效。

尝试了以下将它们组合成一个字符串,但它似乎根本不起作用。

(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John))

(?i)(?<!John\s)Smith.*\s(?!John)

我犯了什么小学生错误?

最佳答案

(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John)) 模式匹配Smith没有 John在它之前 + 1 个空格,或者一个 Smith后面跟着任意数量的字符,后面跟着一个没有立即跟上 John 的空格.因此,它匹配 Smith在很多职位上。

(?i)(?<!John\s)Smith.*\s(?!John) 模式捕获一个Smith前面没有紧跟 John + 空格,以及直到最后一个空格的所有文本,后面没有立即跟上 John .

确保 \s模式在前瞻中:

(?i)(?<!John\s)Smith(?!\s+John)

参见 regex demo

详情

  • (?i) - 不区分大小写的内联修饰符
  • (?<!John\s) - 不紧跟 Hohn 的位置和一个空白字符
  • Smith - 文字子串
  • (?!\s+John) - Smith子字符串不应紧跟 1+ 个空格(或者如果您使用 \s* ,带有 0+ 个空格)和子字符串 John .

关于正则表达式匹配一个单词,但前提是它之前或之后没有另一个特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52424091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com