Comment faire correspondre la Chaîne avec un Motif en Groovy
Je suis en train de décider si une simple expression régulière correspond à une chaîne en Groovy. Voici ma tâche dans gradle. J'ai essayé de faire correspondre avec 2 différentes façons que j'ai trouvé sur le net, mais aucun des deux ne fonctionne. Il a toujours l'affiche "AUCUNE ERREUR TROUVÉ"
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"
}
}
Ne pas
Dans mon code j'utilise une expression régulière comme: /(?i)erreur|échec|abandon/, je ne suis pas sûr si contient travaille avec des Modèles. Si c'est le cas, ce serait une bonne solution
Nah, je pensais que c'était juste le
Acceptez l'exemple de code n'est pas claire, OP voulu utiliser la sous-chaîne correspondante de données. J'aime aussi
String.contains
suffit-il?Dans mon code j'utilise une expression régulière comme: /(?i)erreur|échec|abandon/, je ne suis pas sûr si contient travaille avec des Modèles. Si c'est le cas, ce serait une bonne solution
Nah, je pensais que c'était juste le
error
cas 🙂Acceptez l'exemple de code n'est pas claire, OP voulu utiliser la sous-chaîne correspondante de données. J'aime aussi
String.startsWith()
.OriginalL'auteur Gavriel | 2015-01-07
Vous devez vous connecter pour publier un commentaire.
(?s)
ignore les sauts de ligne pour.*
(DOTALL) et la regexp il signifie un plein match. donc, avec==~
en tant que raccourci, c'est:stdoutStr.indexOf('errors') > -1
OriginalL'auteur cfrick
La
matches()
méthode exige que l'ensemble de la chaîne de correspondre à la forme, si vous voulez regarder pour les chaînes de correspondance utilisationfind()
à la place (ou justeif(errorPattern.matcher(stdoutStr))
depuis Groovy contraint un Comparateur de Booléens en appelantfind
).OriginalL'auteur Ian Roberts