我正在尝试编写一个正则表达式,它将为包含字符" 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");
可以这样做吗?
格雷戈里
答案 0 :(得分:3)
在使用正则表达式之前,请注意input.Contains("a") && input.Contains("b") && input.Contains("c")
有效,更清晰,可能会提供更好的性能。
话虽如此,正则表达式(?=.*a)(?=.*b)(?=.*c).*
对你有用。
它断言该字符串包含a
,b
和c
,一旦完成,它就会匹配任何内容。
答案 1 :(得分:1)
最快的方法是使用乱序正则表达式。
它比包含或纯前瞻快 3 倍。
(?:.*?(?=[abc])(?:(?(1)(?!))(a)|(?(2)(?!))(b)|(?(3)(?!))(c))){3}
(?:
.*?
(?= [abc] )
(?:
(?(1)(?!)) ( a ) # (1)
| (?(2)(?!)) ( b ) # (2)
| (?(3)(?!)) ( c ) # (3)
)
){3}