我正在尝试遵循在 Groovy 中记录正则表达式的示例,但无法让我自己的示例正常工作。这是一个在 regex1 上失败的示例,但适用于压缩的 regex2
def line = "some.key=a value # with comment that is ignored"
def regex1 = '''(?x) # enable extended patterns
^\\s* # ignore starting whitespace
([^=#]+) # capture key
= # literal
([^#]*) # capture value'''
def regex2 = '''^\\s*([^=#]+)=([^#]*)'''
def pattern = ~regex1
def matcher = pattern.matcher(line)
for (i=0; i < matcher.getCount(); i++) {
println matcher[i][0]
println matcher[i][1]
println matcher[i][2]
}
我得到的错误是
Caught: java.util.regex.PatternSyntaxException: Unclosed character class near index 217`
它指向最后一场比赛的最后一个右括号。
如果我更改 regex2 并添加(?x)
到字符串的开头,它也会以同样的方式失败。
在这种情况下,添加扩展模式的正确语法是什么?链接站点上的示例工作正常,所以我知道应该是可能的。