Groovy正则表达式和通配符权限

sme*_*eeb 2 regex groovy

鉴于以下Groovy:

static void main(String[] args) {
    String permission = "[fizz]:[index]"
    String regex = "[fizz]:[*]"
    if((permission =~ regex).matches()) {
        println "We match!"
    } else {
        println "We don't match!"
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:" 我们不匹配! ".这怎么可能?!?

Wil*_*ill 5

您需要转义方括号,并且要匹配index,您需要使用.*,这意味着"任何char,任意次".此外,groovy的slashy字符串语法有助于:

String permission = "[fizz]:[index]"

String regex = /\[fizz]:\[.*]/

assert (permission =~ regex).matches()

assert permission ==~ regex
Run Code Online (Sandbox Code Playgroud)

更新:您可以通过两次转义方括号来使用双引号字符串:

String regex = "\\[fizz]:\\[.*]"
Run Code Online (Sandbox Code Playgroud)