首页 > 解决方案 > 正则表达式 - 不包含除 end 之外的某些字符

问题描述

我需要匹配任何以“&”结尾但中间不包含“,”或“&”的行。

a b c &

a, b, c, &

a & b, c &

a & b

我能够通过使用获得部分成功:

^(?!.*,).*&.*$

我得到了两个:

a b c &
a & b

所以我试过了

^(?!.*(,|&)).*&.*$

而且我无法找到任何匹配项。我怎样才能修改我的正则表达式,所以我只能得到a b c &?我正在使用.NET

标签: .netregex

解决方案


似乎你应该通过使用否定字符类来获得你需要的东西,例如

^[^,&]*&\s*$

使用多行标志。

如果您不想按照 revo 的建议允许尾随空格,则可以替换\s*为。\r?

如果您正在使用多行文本(而不是逐行测试),您可能还希望将换行符添加到否定字符类 ( [^,&\n]) 以避免重叠匹配。


推荐阅读