Wie match-String mit Muster in Groovy
Ich versuche zu entscheiden, ob Sie einen einfachen regulären Ausdruck mit einem string in Groovy. Hier ist meine Aufgabe in gradle. Ich versuche mit 2 verschiedenen Möglichkeiten, die ich im Netz gefunden, aber keiner von Ihnen arbeitet. Druckt er immer aus "KEIN FEHLER GEFUNDEN"
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"
}
}
Nicht
In meinem code verwende ich einen regulären Ausdruck: /(?i)Fehler|Versagen|Abbruch/, ich bin nicht sicher, ob enthält Werke mit Prasselt. Wenn es funktioniert, dann wäre es eine gute Lösung
Nee, ich dachte, es war nur der
Stimmen Sie den Beispielcode nicht klar OP wollte dem übereinstimmenden Teilstring-Daten. Ich mag auch
String.contains
ausreichen?In meinem code verwende ich einen regulären Ausdruck: /(?i)Fehler|Versagen|Abbruch/, ich bin nicht sicher, ob enthält Werke mit Prasselt. Wenn es funktioniert, dann wäre es eine gute Lösung
Nee, ich dachte, es war nur der
error
Fall 🙂Stimmen Sie den Beispielcode nicht klar OP wollte dem übereinstimmenden Teilstring-Daten. Ich mag auch
String.startsWith()
.InformationsquelleAutor Gavriel | 2015-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
(?s)
ignoriert Zeilenumbrüche für.*
(DOTALL) und der regexp-es bedeutet eine vollständige übereinstimmung. also mit==~
als Verknüpfung es ist:stdoutStr.indexOf('errors') > -1
InformationsquelleAutor cfrick
Den
matches()
Methode erfordert die komplette Zeichenkette, die dem Muster entsprechen, wenn Sie wollen, zu suchen von übereinstimmenden Teilstrings verwendenfind()
statt (oder nurif(errorPattern.matcher(stdoutStr))
da Groovy zwingt einen Matcher, Boolean durch den Aufruffind
).InformationsquelleAutor Ian Roberts