2016-05-11 10 views
0

Jenkins Parser-Plug-log Job instabil zu machen, wenn unter Zeichenfolge in der jenkins Konsole gefundenJenkins regex für mehrere Wörter für negative Muster

Unten zwei Regex Ausdrücke aus einer Datei sind. was sagt, wenn es "unbekannter Befehl" oder "WARNUNG" findet, betrachten diese als Warnung.

warning /unknown command/ 
warning /(?i)\bwarning\b/i 

Wie zu ignorieren, wenn wir "unbekannten Befehl" und WARNUNG im folgenden Kontext finden. In Kombinationen

[exec] ORA-0042: unknown command ")" - rest of line ignored. 
[deployComposite] WARNING: Error in applying config plan: Namespace prefix 'ui' used but not declared.. Config plan was skipped. 

pls Hilfe in zwei verschiedenen Regex-Ausdruck.

Auch gibt es ein regex Werkzeug, das ich Hilfe bekommen von

Vielen Dank im Voraus können

+0

So werden diese Regexes nicht? Der zweite sollte als 'warning/\ bwarning \ b/i' geschrieben werden. Ich glaube, –

+0

first 2 regex, den ich derzeit habe, berücksichtigt auch die 3. und 4. Zeile. Was ich überspringen/ignorieren möchte – enthuguy

+0

Hier ist ein nettes Werkzeug, um Ihre Regex zu "visualisieren": https://jex.im/regulex/#!embed=false&flags=&re=%5E(a%7Cb)*%3F%24 –

Antwort

1

über mehrere Zeilen zu entsprechen, müssen Sie

  • Look für die Zeichenfolge unknown command
  • suchen Sie nach genau eine neue Zeile Zeichen \n danach, dh in die nächste Zeile
  • überspringen
  • einen negativen Vorgriff verwenden, das Spiel zu verwerfen, wenn WARNING in der nächsten Zeile

Regular Expression

.*unknown command[^\n]*\n(?![^\n]*WARNING) 

Hier einig Java-Code einschließlich Ihrem Beispiel Eingabe zu demonstrieren gefunden wird:

String value = "[exec] ORA-0042: unknown command \")\" - rest of line ignored.\n" 
     + "[deployComposite] WARNING: Error in applying config plan: Namespace prefix " 
     + "'ui' used but not declared.. Config plan was skipped."; 
Pattern pattern = Pattern.compile(".*unknown command[^\n]*\n(?![^\n]*WARNING)"); 
Matcher matcher = pattern.matcher(value); 
if (matcher.find()) { 
    System.out.println("Matched: " + matcher.group(0)); 
} else { 
    System.out.println("No match!"); 
} 

Dies wird ausgegeben:

No match! 

Wenn Sie nun beispielsweise die WARNING zu DEBUG Zeichenfolge ändern, wird der Ausgang sein:

Matched: [exec] ORA-0042: unknown command ")" - rest of line ignored.