Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为什么赢了';“t Groovy荣誉”;或;我的正则表达式中的实例?_Regex_Groovy - Fatal编程技术网

Regex 为什么赢了';“t Groovy荣誉”;或;我的正则表达式中的实例?

Regex 为什么赢了';“t Groovy荣誉”;或;我的正则表达式中的实例?,regex,groovy,Regex,Groovy,众所周知,正则表达式中的“|”是“或”运算符。所以当我运行这个: static void main(String[] args) { String permission = "[fizz]:[index]" if((permission =~ /\[fizz|buzz]:\[.*]/).matches()) { println "We match!" } else { println "We don't match!" } } …

众所周知,正则表达式中的“
|
”是“
”运算符。所以当我运行这个:

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个或更多字符,但a
,然后

检查一下。也可在以下网址查阅:


有人提醒我今天不要将答案作为评论发布。邮寄。