匹配所有的正则表达式模式,当找到特定单词时 return null
Regex pattern to match all, and return null when specific words are found
我有这个正则表达式。
^BRN.*?(?:paid|to)\s([A-Za-z\s]+)\b(?<!\bself)
我想要 return 所需模式后的词,但只是找不到某些词。如果找到它们,则正则表达式不应该 return 任何东西。因此,
BRN CLG-CI IQ PAID IONANDA PAUL
应该returnIONANDA PAUL,确实如此。所以那里是正确的。
但是我想要
BRN-TO CASH SELF
到 return 一个空字符串或本质上它匹配但 return 没有输出。目前,正则表达式 returns this
CASH\s,\s 表示输出中包含空格。我尝试了负面回顾,但我仍在寻找如何不 return 任何东西,如果找到这个词。
谢谢!
注意your regex用([A-Za-z\s]+)\b
捕获了BRN-TO CASH SELF
中的CASH
,因为一旦到达SELF
之后的单词边界,负向后视就会触发回溯,并且正则表达式引擎重新匹配字符串并开始在 char 之后产生 char,同时沿着字符串返回最终找到 SELF
之前的单词边界位置,其中没有 SELF
因为整个单词立即出现该位置的左侧,这是一个有效的匹配项。
您可以在 \s
:
之后使用负前瞻
^BRN.*?(?:paid|to)\s(?![A-Za-z\s]*\bself\b)([A-Za-z\s]+)
# ^^^^^^^^^^^^^^^^^^^^^^^
参见regex demo。
现在,在匹配paid
或to
之后的空格后,会触发一次负向先行检查,如果在任何零或self
之后有一个完整的单词self
更多 ASCII 字符或空白字符,整个匹配将失败,否则,它将成功。
我有这个正则表达式。
^BRN.*?(?:paid|to)\s([A-Za-z\s]+)\b(?<!\bself)
我想要 return 所需模式后的词,但只是找不到某些词。如果找到它们,则正则表达式不应该 return 任何东西。因此,
BRN CLG-CI IQ PAID IONANDA PAUL
应该returnIONANDA PAUL,确实如此。所以那里是正确的。 但是我想要
BRN-TO CASH SELF
到 return 一个空字符串或本质上它匹配但 return 没有输出。目前,正则表达式 returns this CASH\s,\s 表示输出中包含空格。我尝试了负面回顾,但我仍在寻找如何不 return 任何东西,如果找到这个词。 谢谢!
注意your regex用([A-Za-z\s]+)\b
捕获了BRN-TO CASH SELF
中的CASH
,因为一旦到达SELF
之后的单词边界,负向后视就会触发回溯,并且正则表达式引擎重新匹配字符串并开始在 char 之后产生 char,同时沿着字符串返回最终找到 SELF
之前的单词边界位置,其中没有 SELF
因为整个单词立即出现该位置的左侧,这是一个有效的匹配项。
您可以在 \s
:
^BRN.*?(?:paid|to)\s(?![A-Za-z\s]*\bself\b)([A-Za-z\s]+)
# ^^^^^^^^^^^^^^^^^^^^^^^
参见regex demo。
现在,在匹配paid
或to
之后的空格后,会触发一次负向先行检查,如果在任何零或self
之后有一个完整的单词self
更多 ASCII 字符或空白字符,整个匹配将失败,否则,它将成功。