繁体   English   中英

C#、正则表达式和 AND 运算符

[英]C#, Regex & the AND operator

我正在尝试编写一个正则表达式,该表达式将为包含字符“a”、“b”和“c”的任何字符串生成匹配项。 它必须包含所有这些,但顺序无关紧要。

"axbxcx" -> true
"cba" -> true
"cbx" -> false

我尝试了各种方法。

searchRegex = new Regex(("a")("b")("c"))
searchRegex = new Regex("a+b+c+")
searchRegex = new Regex([abc])

我试图重构的代码是这样的:

return input.Contains("0") && input.Contains("1") && input.Contains("a");

这能做到吗?

格雷戈里

在使用正则表达式之前,请注意input.Contains("a") && input.Contains("b") && input.Contains("c")工作,更清晰,可能提供更好的性能。

话虽如此,正则表达式(?=.*a)(?=.*b)(?=.*c).*对你有用。

它断言字符串包含a 、 a b和 a c并且一旦完成它匹配任何东西。

最快的方法是使用乱序正则表达式。
它比包含或纯前瞻快 3 倍。

(?:.*?(?=[abc])(?:(?(1)(?!))(a)|(?(2)(?!))(b)|(?(3)(?!))(c))){3}

 (?:
    .*? 
    (?= [abc] )
    (?:
       (?(1)(?!)) ( a )                         # (1)
     | (?(2)(?!)) ( b )                         # (2)
     | (?(3)(?!)) ( c )                         # (3)
    )
 ){3}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM