我正在尝试在.NET中构建一个正则表达式,它将匹配列表中的单词(使用更改),这些单词不会出现在另一个列表中的单词之后,后面有空格。
例如,假设我正在寻找AAA或BBB,我希望它们不会在WWW或XXX之后出现,以便以下内容匹配:
DDD AAA
AAA
但以下情况不应该:
WWW AAA
XXX BBB
我尝试使用以下模式:
(?<!WWW|XXX)(AAA|BBB)
但我不知道如何定义第一个列表后面不应该有空格。
有什么想法吗?
答案 0 :(得分:2)
幸运的是,.NET正则表达式允许在lookbehind断言中无限重复,因此扩展此正则表达式并不复杂:
(?<!(?:WWW|XXX)\s*)(AAA|BBB)
<强>说明:强>
(?<! # Assert it's impossible to match this before the current position:
(?:WWW|XXX) # WWW or XXX
\s* # followed by any number of whitespace characters
) # End of lookbehind
(AAA|BBB) # Match AAA or BBB, capture the result in group 1