[英]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.