Синтаксис Groovy для соответствия регулярного выражения

Вы можете пытаться сделать это:

def processList(listOfNumbers):
    return [i ** 2 if i < 0 else i ** 2 + 1 for i in listOfNumbers]
44
задан Simon Forsberg 30 July 2017 в 09:56
поделиться

3 ответа

Это было самое близкое совпадение с кодом Perl, которого я смог достичь:

def txt = "abc : groovy : def"
if ((m = txt =~ / : (.+?) : /)) {
  def match = m.group(1)
  println "MATCH=$match"
}
20
ответ дан 26 November 2019 в 21:55
поделиться

Это мое лучшее понимание того, как сделать это с помощью синтаксиса Groovy (но см. Также ответ lfaraone):

import java.util.regex.Matcher

def txt = 'abc : groovy : def'
if (txt =~ ~/ : (.+?) : /) {
    def match = Matcher.lastMatcher[0][1]
    println "MATCH=$match"
}
0
ответ дан 26 November 2019 в 21:55
поделиться

m[0] is the first match object.
m[0][0] is everything that matched in this match.
m[0][1] is the first capture in this match.
m[0][2] is the second capture in this match.

Based on what I have read (I don't program in Groovy or have a copy handy), given

def m = "barbaz" =~ /(ba)([rz])/;

m[0][0] will be "bar"
m[0][1] will be "ba"
m[0][2] will be "r"
m[1][0] will be "baz"
m[1][1] will be "ba"
m[1][2] will be "z"

I could not stand not knowing if I was correct or not, so I downloaded groovy and wrote an example:

def m = "barbaz" =~ /(ba)([rz])/;

println "m[0][0] " + m[0][0]
println "m[0][1] " + m[0][1]
println "m[0][2] " + m[0][2]
println "m[1][0] " + m[1][0]
println "m[1][1] " + m[1][1]
println "m[1][2] " + m[1][2]
81
ответ дан 26 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: