正则表达式匹配一个单词,但前提是它之前或之后没有另一个特定单词
Regex to match on a word but only if it isn't preceded or followed by another specific word
需要 Regex 字符串才能使用自定义 Exchange DLP "Sensitive Information" 类型。
即匹配 Smith 但不是 John Smith 或 Smith John
(?i)(?<!John\s)Smith
似乎适用于 "John Smith",但我不相信它是 100% 有效的。
(?i)(Smith.*\s(?!John))
似乎适用于 "Smith John" 但如果后跟 space 或换行则无效。
尝试过以下方法将它们组合成一个字符串,但似乎根本不起作用。
(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John))
(?i)(?<!John\s)Smith.*\s(?!John)
我犯了什么小学生错误?
(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John))
模式匹配前面没有 John
+ 1 个空格的 Smith
,或者后面跟任意数量字符的 Smith
带有不紧跟 John
的空格。因此,它在很多位置都匹配 Smith
。
(?i)(?<!John\s)Smith.*\s(?!John)
模式抓取一个 Smith
没有紧跟 John
+ 空格,以及所有文本到最后一个没有紧跟 [=13 的空格=].
确保 \s
模式在前瞻内:
(?i)(?<!John\s)Smith(?!\s+John)
详情
(?i)
- 不区分大小写的内联修饰符
(?<!John\s)
- 没有紧跟 Hohn
和空白字符 的位置
Smith
- 文字子串
(?!\s+John)
- Smith
子字符串不应紧跟 1+ 个空格(或者如果您使用 \s*
,则不应紧跟 0+ 个空格)和子字符串 John
.
需要 Regex 字符串才能使用自定义 Exchange DLP "Sensitive Information" 类型。
即匹配 Smith 但不是 John Smith 或 Smith John
(?i)(?<!John\s)Smith
似乎适用于 "John Smith",但我不相信它是 100% 有效的。
(?i)(Smith.*\s(?!John))
似乎适用于 "Smith John" 但如果后跟 space 或换行则无效。
尝试过以下方法将它们组合成一个字符串,但似乎根本不起作用。
(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John))
(?i)(?<!John\s)Smith.*\s(?!John)
我犯了什么小学生错误?
(?i)(?<!John\s)Smith |(?i)(Smith.*\s(?!John))
模式匹配前面没有 John
+ 1 个空格的 Smith
,或者后面跟任意数量字符的 Smith
带有不紧跟 John
的空格。因此,它在很多位置都匹配 Smith
。
(?i)(?<!John\s)Smith.*\s(?!John)
模式抓取一个 Smith
没有紧跟 John
+ 空格,以及所有文本到最后一个没有紧跟 [=13 的空格=].
确保 \s
模式在前瞻内:
(?i)(?<!John\s)Smith(?!\s+John)
详情
(?i)
- 不区分大小写的内联修饰符(?<!John\s)
- 没有紧跟Hohn
和空白字符 的位置
Smith
- 文字子串(?!\s+John)
-Smith
子字符串不应紧跟 1+ 个空格(或者如果您使用\s*
,则不应紧跟 0+ 个空格)和子字符串John
.