众所周知,正则表达式中的“|
”是“OR
”运算符。所以当我运行时:
static void main(String[] args) {
String permission = "[fizz]:[index]"
if((permission =~ /\[fizz|buzz]:\[.*]/).matches()) {
println "We match!"
} else {
println "We don't match!"
}
}
...那为什么要打印“我们不匹配!”???
答案 0 :(得分:5)
正则表达式\[fizz|buzz]:\[.*]
匹配:
\[fizz
- 文字[
后跟fizz
|
- 或运营商.... buzz]:\[
- 匹配文字buzz]:[
.*
- 任何字符,但换行符,尽可能多次,贪婪]
- 文字]
。我认为您需要重新组合替代方案:
if((permission =~ /\[(?:fizz|buzz)]:\[[^\]]*]/).matches()) {
此处\[(?:fizz|buzz)]:\[[^\]]*]
将匹配[
,然后匹配fizz
或buzz
而不捕获字词,然后]:[
,[^\]]*
将匹配0个或多个字符,但]
然后]
。