就像是:
def match = "John 19" =~ /(&name&)\w+ (&age&\d+)/
def name = match.name
def age = match.age
Run Code Online (Sandbox Code Playgroud)
是否有一个groovy语法,允许这样的东西(而不是&我组成的虚构运算符?
tim*_*tes 38
假设您使用的是Java 7+,您可以:
def matcher = 'John 19' =~ /(?<name>\w+) (?<age>\d+)/
if( matcher.matches() ) {
println "Matches"
assert matcher.group( 'name' ) == 'John'
assert matcher.group( 'age' ) == '19'
}
else {
println "No Match"
}
Run Code Online (Sandbox Code Playgroud)
nat*_*tke 17
这不会命名组,但是闭包会对匹配进行参数化:
("John 19" =~ /(\w+) (\d+)/).each {match, name, age ->
println match
println name
println age
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
John 19
John
19
Run Code Online (Sandbox Code Playgroud)
这是一个有用的参考:http://naleid.com/blog/2008/05/19/dont-fear-the-regexp/