Compiler-Fehler Regular Expressions matchen nicht korrekt

Burny91

Mitglied
Hallo Allerseits,

ich versuche gerade via Regex Log-Files von einem Webserver zu filter. Meine Methode filter sollte eigentlich funktionieren. Doch wenn ich sie auf mein Log-File loslasse fliegt mir sofort eine Exception entgegen.

Java:
Exception in thread "main" java.lang.IllegalStateException: No match found
	at java.util.regex.Matcher.group(Unknown Source)
	at java.util.regex.Matcher.group(Unknown Source)
	at Analyser.filter(Analyser.java:39)
	at Analyser.readFile(Analyser.java:26)
	at Analyser.main(Analyser.java:46)
[01/31/05 11:26:11,__init__,INFO] ----------------------------------------

So sehen die ersten paar Zeilen des Logiles aus:
Code:
[01/31/05 11:26:11,__init__,INFO] ----------------------------------------
[01/31/05 11:26:11,__init__,INFO] Server is starting! myserver
[01/31/05 11:26:11,__init__,INFO] sendfile(2) is NOT available, compatible but slower file serving is used
[01/31/05 11:26:11,__init__,INFO] Creating server on ""
[01/31/05 11:26:11,__init__,INFO] Loading plugins...
[01/31/05 11:26:11,__init__,INFO] Loading plugin module: cache
[01/31/05 11:26:11,__init__,INFO] Loading plugin: PageCacher
[01/31/05 11:26:11,__init__,INFO] Loading plugin: PageCacher_post
[01/31/05 11:26:11,__init__,INFO] Loading plugin module: compress
[01/31/05 11:26:12,__init__,INFO] Loading plugin: ResponseCompressor
[01/31/05 11:26:12,__init__,INFO] Loading plugin module: scheduler
[01/31/05 11:26:12,__init__,INFO] Loading plugin: SchedulerPlugin
[01/31/05 11:26:12,__init__,DEBUG] Scheduler plugin init

Das wären die ersten 13 Zeilen des Log-Files. Ich versuche gerade die DEBUG Lines zu filtern, indem ich meine Methode filter()
Java:
public String filter(String logline, String regex){
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(logline);
		String result = null;
		matcher.find();
		result = matcher.group();
		return result;
	}

in der readFile Methode ausführe.

Java:
	public void readFile(String file) throws IOException{
		br = new BufferedReader(new FileReader(file));
		while((line = br.readLine()) != null){
			System.out.println(line);
			System.out.println(filter(line, "DEBUG"));
		}
	};

Was mache ich falsch? ???:L

MfG Burny91
 

VfL_Freak

Top Contributor
Moin

IllegalStateException - If no match has yet been attempted, or if the previous match operation failed
Vermutlich weil gleich in der ersten Zeile kein DEBUG vorkommt!

Versuch' doch einfach mal mit "matcher.matches()" zu prüfen, ob Dein Suchbegriff vorkommt und dann ggf. 'line' zurück zugeben ...

Gruß
Klaus
 
G

Gast2

Gast
Das Problem hatte ich letztens auch, da sich die Implementation der Klasse Matcher anders verhält, als man es (nach der Definition von Regex) vermutet. Die Methode matches prüft ob der gesamte String matcht.
 

Burny91

Mitglied
Lies dir das mal durch: http://www.java-forum.org/allgemeines/15476-grundzuege-pattern-matching-split.html

Dort ist auch ein Beispiel wie man die Klasse Matcher richtig verwendet.

Ich habe mir mal deine Aussage zu Rate gezogen und habe nun alles was ich wollte :D
RegEx ist schon overpowert!

Hier ein Ausschnitt meiner Lösung :) Es wird nun alles in die HM geschrieben was nach einem Komma folgt und nur in Grossbuchstaben geschrieben wird. Die Lösung ist zwar ein wenig spartanisch, aber ich habe das Nesting nicht ganz auf die Reihe bekommen. Danke für eure guten Ratschläge.

Java:
public Analyser(){
		messageMap = new HashMap<String, Integer>();
	}
	
	
	public void readFile(String file) throws IOException{
		br = new BufferedReader(new FileReader(file));
		while((line = br.readLine()) != null){
			generateHashMap(messageMap, filter(line, "(?<=,)[A-Z]+"));
		}
	};
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
R regular expressions Java Basics - Anfänger-Themen 3
eykarhorn Escapen in Regular Expressions Java Basics - Anfänger-Themen 7
G Regular expressions Java Basics - Anfänger-Themen 6
G Regular expressions Java Basics - Anfänger-Themen 3
D Regular Expressions Java Basics - Anfänger-Themen 2
G Regular Expressions Java Basics - Anfänger-Themen 3
P Regular expressions: Liste? Java Basics - Anfänger-Themen 7
J Regular Expressions Java Basics - Anfänger-Themen 5
Dimax Erste Schritte Regular Expression Java Basics - Anfänger-Themen 12
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
B Regular Expression bei replace Java Basics - Anfänger-Themen 11
O Regular Expression Java Basics - Anfänger-Themen 4
F Hilfe Regular Expression Grouping Value Java Basics - Anfänger-Themen 3
Y Was macht folgende Regular Expression Java Basics - Anfänger-Themen 2
S regular expression - suche nach | Java Basics - Anfänger-Themen 10
M Regular Expression - Passwort - aufeinanderfolgende Zeichen Java Basics - Anfänger-Themen 3
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
J Frage zu Regular Expression Java Basics - Anfänger-Themen 2
P Passwort überprüfen mit regular Expression Java Basics - Anfänger-Themen 4
M Unverständnis Lamda Expressions Java Basics - Anfänger-Themen 3
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
J Rekursives Parsen (ohne Reg Expressions) Java Basics - Anfänger-Themen 8
M Lambda Expressions Java Basics - Anfänger-Themen 3
pkm Regexproblem - Wie kann ich zwei oder mehr beliebige Zeichen matchen? Java Basics - Anfänger-Themen 7
C Regex zum matchen ausserhalb von Tags Java Basics - Anfänger-Themen 3
K innerhalb eines Strings mit RegEx matchen Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben