正则表达式背后有改动和空白

时间:2014-01-15 16:01:20

标签: c# regex

我正在尝试在.NET中构建一个正则表达式,它将匹配列表中的单词(使用更改),这些单词不会出现在另一个列表中的单词之后,后面有空格。

例如,假设我正在寻找AAA或BBB,我希望它们不会在WWW或XXX之后出现,以便以下内容匹配:

DDD AAA
AAA

但以下情况不应该:

WWW AAA
XXX      BBB

我尝试使用以下模式:

(?<!WWW|XXX)(AAA|BBB)

但我不知道如何定义第一个列表后面不应该有空格。

有什么想法吗?

1 个答案:

答案 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