Существуют ли названные группы в шаблоне Groovy regex? Что-то вроде: def match = "John 19" =~ /(&name&)\w+ (&age&\d+)/ def name = match.name def age = match.age Есть ли синтаксис groovy, который позволяет что-то вроде этого (вместо вымышленного оператора &, который я составил? Ответ 1 Предполагая, что вы используете 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" } Если вы еще не на java 7, вам понадобится сторонняя библиотека регулярных выражений Ответ 2 Это не называется группами, но закрытие делает параметризацию соответствия: ("John 19" =~ /(\w+) (\d+)/).each {match, name, age -> println match println name println age } который выводит: John 19 John 19 Это полезная ссылка: http://naleid.com/blog/2008/05/19/dont-fear-the-regexp/
Ответ 1 Предполагая, что вы используете 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" } Если вы еще не на java 7, вам понадобится сторонняя библиотека регулярных выражений
Ответ 2 Это не называется группами, но закрытие делает параметризацию соответствия: ("John 19" =~ /(\w+) (\d+)/).each {match, name, age -> println match println name println age } который выводит: John 19 John 19 Это полезная ссылка: http://naleid.com/blog/2008/05/19/dont-fear-the-regexp/