公认的是,正则表达式中的“ |
”是“ OR
”运算符。所以当我运行这个:
static void main(String[] args) {
String permission = "[fizz]:[index]"
if((permission =~ /\[fizz|buzz]:\[.*]/).matches()) {
println "We match!"
} else {
println "We don't match!"
}
}
...然后为什么打印“我们不匹配!”
最佳答案
正则表达式\[fizz|buzz]:\[.*]
匹配:\[fizz
-文字[
后跟fizz
|
-或运算符...。buzz]:\[
-匹配文字buzz]:[
.*
-除换行符以外的任何字符,请尽可能多地贪婪]
-文字]
。
我认为您需要重新组合替代方案:
if((permission =~ /\[(?:fizz|buzz)]:\[[^\]]*]/).matches()) {
在这里,
\[(?:fizz|buzz)]:\[[^\]]*]
将匹配[
,然后fizz
或buzz
而不捕获单词,然后]:[
,[^\]]*
将匹配0个或多个除]
之后的任何字符,然后匹配。检查regex101 demo。还检查了OCP Regex Visualizer:
关于regex - 为什么Groovy不接受我的正则表达式中的“OR”实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33892052/