检查存在多少个正则表达式匹配组,然后使用它们
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查存在多少个正则表达式匹配组,然后使用它们相关的知识,希望对你有一定的参考价值。
我想在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
}
答案
第一个变种中的问题,在调用groupCount()
之前你必须调用find()
or 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())
以上是关于检查存在多少个正则表达式匹配组,然后使用它们的主要内容,如果未能解决你的问题,请参考以下文章