Regex, um Sätze zu erkennen

bin4ry

Mitglied
Hi,

ich möchte mittels der RegEx-Klasse einen Text so parsen, dass die einzelnen Sätze erkannt werden. Ich will es nicht komplex machen und nur auf Satzendezeichen '.', '?' und '!' matchen. Ein RegEx dazu wäre

\\w*[.?!](?=\\s)


Wenn ich das nun aber implementiere, matched er nie. Was mache ich falsch?

Java:
Pattern pat = Pattern.compile("\\w*[.?!](?=\\s)");
		//Pattern pat = Pattern.compile("^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
			
		Matcher patmatch = pat.matcher(fileContent);
		if(patmatch.matches())
		{
			System.out.println("it matches");
		}else{
			System.out.println("No matches");
		}
	}

Der Inhalt von fileContent ist:

"Dies ist ein Test. Dies ist ein weiterer Test! Dies ist noch einer."


Danke
 
Zuletzt bearbeitet:
Die matches Methode liefert nur true wenn der gesamte Eingabestring matched. Schau dir mal die anderen Methoden wie zB matcher.find an.
 
Ich weis ja nicht, wie gut deine Satzerkennung sein soll. Beachte aber, das gerade der Punkt ('.') oft für andere Sachen als das Satzende verwendet wird, wie z.B. nach Abkürzungen oder nach Ordinalzahlen.
 

Zurück
Oben