util pattern matches example regex string groovy gradle match

regex - matches - Cómo hacer coincidir String con Pattern en Groovy



matches java (2)

Estoy tratando de decidir si una expresión regular simple coincide con una cadena en Groovy. Aquí está mi tarea en gradle. Traté de combinar con 2 formas diferentes que encontré en la red, pero ninguna de ellas funciona. Siempre imprime "NO ERROR ENCONTRADO"

task aaa << { String stdoutStr = "bla bla errors found:/nhehe Aborting now/n hehe" println stdoutStr Pattern errorPattern = ~/error/ // if (errorPattern.matcher(stdoutStr).matches()) { if (stdoutStr.matches(errorPattern)) { println "ERROR FOUND" throw new GradleException("Error in propel: " + stdoutStr) } else { println "NO ERROR FOUND" } }


(?s) ignora los saltos de línea para .* (DOTALL) y la expresión regular allí significa una coincidencia completa. entonces con ==~ como atajo es:

if ("bla bla errors found:/nhehe Aborting now/n hehe" ==~ /(?s).*errors.*/) ...


if (errorPattern.matcher(stdoutStr).matches()) {

El método matches() requiere que toda la cadena coincida con el patrón, si desea buscar subcadenas coincidentes use find() lugar (o simplemente if(errorPattern.matcher(stdoutStr)) ya que Groovy coacciona un Matcher a Boolean invocando find ) .