.net 正则表达式-不包含除end以外的特定字符
我需要匹配任何以“&”结尾但中间不包含“&”或“&”的行.net 正则表达式-不包含除end以外的特定字符,.net,regex,.net,Regex,我需要匹配任何以“&”结尾但中间不包含“&”或“&”的行 a b c & a, b, c, & a & b, c & a & b 我通过以下方法获得了部分成功: ^(?!.*,).*&.*$ 我得到了两个: a b c & a & b 所以我试过了 ^(?!.*(,|&)).*&.*$ 我找不到匹配的。如何修改我的正则表达式,使我只能获得abc&?我正在使用.NET似乎您应该通过使用否定字符类来获得所需
a b c &
a, b, c, &
a & b, c &
a & b
我通过以下方法获得了部分成功:
^(?!.*,).*&.*$
我得到了两个:
a b c &
a & b
所以我试过了
^(?!.*(,|&)).*&.*$
我找不到匹配的。如何修改我的正则表达式,使我只能获得
abc&
?我正在使用.NET似乎您应该通过使用否定字符类来获得所需的内容,例如
^[^,&]*&\s*$
使用多行标志
如果您不想按照revo的建议允许使用尾随空格,可以将\s*
替换为\r?
如果您正在处理多行文本(而不是测试行对行),您可能还希望将换行符添加到否定字符类(
[^,&\n]
),以避免重叠匹配。似乎您应该通过使用否定字符类获得所需的内容,例如
^[^,&]*&\s*$
使用多行标志
如果您不想按照revo的建议允许使用尾随空格,可以将\s*
替换为\r?
如果您使用多行文本(而不是逐行测试)以避免重叠匹配,您可能还希望将换行符添加到否定字符类(
[^,&\n]
),以避免重叠匹配。可能(?m)^*(?:,|和(?!\r?$).&\r?$
?或者可能是(?m)^(?。*(?:,|和(?!\r?$).&\r?$
?或者最好使用\r?
而不是\s*
,否则行尾也允许空格。@当然,添加了注释。我认为OP处理多行输入,因此,您最好在否定字符类中添加换行符。实际上,这就是在.NET正则表达式中使用\r?
之前的$
的要点,该正则表达式是使用RegexOptions.Multiline
选项编译的。最好使用\r?
而不是\s*
否则行末也允许空格。@revo当然,添加了一个注释。我认为OP处理多行输入,因此,最好将换行符添加到否定字符类中。实际上,这就是使用RegexOptions.Multiline
选项编译的.NET正则表达式中\r?
前面的$
的要点。