我正在寻找在Groovy中匹配正则表达式的方法,检查返回了多少组,然后使用这些组之一,但是得到了:
java.lang.IllegalStateException: No match found
如果我在match.groupCount()
之前致电match.group(1)
def match = "Some text" =~ /(text)/
if (match.groupCount() >= 1) {
print match.group() // error
}
// or
def match = "Some text" =~ /(text)/
if (match) {
print match.group() // success
}
答案 0 :(得分:-1)
第一个变体中的问题是,在调用groupCount()
之前必须先调用find()
或matches()
def match = "Some text" =~ /(text)/
if (match.find()) {
println match.groupCount()
print match.group() // error
}
第二种情况下的if (match) {...}
实际上调用了asBoolean()
,后者在匹配器上调用了find()
还有一些更简单的变体
("Some text 2 text" =~ /text/).each{
println it
}
或
println (("Some text 2 text" =~ /text/).collect())