Reguläre Ausrücke Punkte im Satz richtig erkennen

critak

Neues Mitglied
Hi bin ganz neu an Board und hab sogar schon eine Frage bei der ihr mir vll helfen könntet.
Da ich hoffe das dieser Beitrag irgendwann mal jemand anderem helfen wird, gebe ich mir extra viel Mühe. ;-)

Ich möchte Sätze aus Text extrahieren.
Meine Adhoc Lösung war also
Java:
text.split("[\\.\\!\\?]");

Ok, was fällt auf ? Fälle wie "The Ex-President Georg W. Bush is a man." enden so:
Java:
[The Ex-President Georg W]
[Bush is a man.]

Ok, also brauche ich eine Regel die keinen Split bei Einzelbuchstaben macht.
Hab ein Paar Tutorials gemacht und herrausgefunden, dass
Java:
^ = Negator
[A-Z] = Alle möglichen Großbuchstaben von A-Z.
{1} = der Länge 1

Also hab ich:
Java:
text.split("^([A-Z]{1}[.])|[\\.\\!\\?]");


Funktioniert aber nicht :)

Das Nächste Problem wäre zb "On 29. January the boy was Born" , "etc." und "My Prof. ask me to do some FooFooFoo"


Hab wirklich recht wenig Ahnung von RegExpr und hoffe deswegen das ihr mir helfen könnt.
Vielen Dank schonmal.
 
Zuletzt bearbeitet:

Mizar

Aktives Mitglied
Ich weiß nicht so recht ob es überhaupt möglich ist einen regulären Ausdruck zu finden, der alle auftauchenden Spezialfälle korrekt behandelt. Nehmen wir als Beispiel den folgenden Satz:
Code:
Die richtige Antwort auf die 29. Frage lautete 29.
Wie soll hier ein regulärer Ausdruck erkennen können, dass es sich beim 1. Punkt nicht um das Satzende handelt, wohl aber beim 2. Punkt? Sollte ich mich irren, dann korrigiert mich bitte, aber ich hätte keine Ahnung wie das möglich sein sollte ???:L
 

turing

Mitglied
Du kannst "([a-zA-Z][a-zA-Z][a-zA-Z]*)[\\.\\!\\?]" nutzen, um alle Positionen zu finden, in denen min. zwei Buchtstaben gefolgt von einem Satz-Endezeichen folgen. Jedoch kann es auch Abkürzungen mit zwei oder mehr Buchstaben geben (usw.) oder Zahlen können am Satzende auftauchen. So einfach ist das nicht.

BTW: Wenn Du mit sowas ein split ansetzt, verschwinden die gematchten Zeichen. Solltest also nach diesen Mustern suchen und selber splitten. Schau auch mal bei Pattern und Matcher vorbei.
 

timbeau

Gesperrter Benutzer
Ich kenne dein Problem, wir arbeiten ebenfalls an Satz-Splittern und das ist absolut nicht trivial.

Zu beachten wären z.B. folgende Punkte:

- . gefolgt von Leerzeichen gefolgt von Kleinbuchstabe ist sehr wahrscheinlich kein Satz.
- Abkürzungen die von einem Punkt gefolgt werden und dann innerhalb der nächsten 1 - X Wörter wieder ein Punkt kommt sind ebenfalls mit höherer Wahrscheinlichkeit kein Satzende

Bsp: Dies ist der 3. Januar und es lag kein Schnee.

Gegenbsp: Wettkampf: "Ich war 1. Rolf 2., Ben 3."

wobei der letzte Punkt im deutschen auch als Satzende zählt.
 

Empire Phoenix

Top Contributor
Willkommen in der welt der nicht komplett Lösbaren Probleme. Faktisch müsstest du eine Grammatik Analyse machen um rauszufinden an welcher Stelle ein Satz endet. Dazu ein Großes Abkürzungswörterbuch und wohl wenn es sich um ein Realen einsatzzweck handelt eine Rechtschreibkorrektur + eine Kontextanalyse. Zumindest sollte damit klar sein warum die Übersetzer Programme alle mehr oder weniger nutzlos sind bei Sätzen.
 

critak

Neues Mitglied
Zunächst einmal vielen Dank !
Der regulären Ausdruck von turing hat mir ein wenig weiter geholfen. (besonders der Tipp, dass split die Zeichen schluckt ;) )

Aber ihr habt Recht vll ist das Problem zu komplex.
Mit RegExpr kann mal also nur einen "nähr Lösung" erreichen.
Naja für meine Zwecke reichts halbwegs.
Ich werd noch gängige Abkürzungen wie "etc. oder z.B." extra rausfiltern.
Aber bei solchen Sätzen seh ich schwarz: :shock:
Code:
Die richtige Antwort auf die 29. Frage lautete 29.
;-) Naja die kommen auch nicht sooooo oft vor.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Reguläre Ausrücke - Klammer nicht vorhanden Allgemeine Java-Themen 2
P reguläre ausrücke und String.matches Allgemeine Java-Themen 4
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
E Reguläre Ausdrücke: String-Ersetzung Allgemeine Java-Themen 0
G Reguläre Ausdrücke Allgemeine Java-Themen 11
G Reguläre Ausdrücke Allgemeine Java-Themen 2
S Reguläre Ausdrücke: Polynomterme Allgemeine Java-Themen 14
jstei001 Reguläre Ausdrücke bearbeiten/ändern Allgemeine Java-Themen 14
C reguläre Ausdrücke finden nicht was sie finden sollen Allgemeine Java-Themen 8
F Reguläre Ausdrücke und BBCode Allgemeine Java-Themen 10
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
J String für reguläre Ausdrücke escapen Allgemeine Java-Themen 2
B kontextfreie grammatik / reguläre grammatik Allgemeine Java-Themen 2
C Reguläre Ausdrücke - X{0}?.* Allgemeine Java-Themen 8
C Reguläre Ausdrücke, String rückwärts durchsuchen Allgemeine Java-Themen 6
I Reguläre Ausdrücke und das "~" Symbol Allgemeine Java-Themen 2
B Reguläre ausdrücke mit variablen? Allgemeine Java-Themen 12
H Regex - Reguläre Ausdrücke Allgemeine Java-Themen 3
A Reguläre Ausdrücke vereinfachen Allgemeine Java-Themen 19
J Reguläre Ausdrücke Allgemeine Java-Themen 14
A Zufallswerte für reguläre Ausdrücke Allgemeine Java-Themen 15
G Reguläre Ausdrücke Allgemeine Java-Themen 8
R reguläre Ausdrücke Allgemeine Java-Themen 2
L Reguläre Ausdrücke und Fehlerbehandlung Allgemeine Java-Themen 10
RaoulDuke Reguläre Ausdrücke - Daten extrahieren Allgemeine Java-Themen 3
S Reguläre Ausdruecke! Allgemeine Java-Themen 5
L reguläre Ausdrücke? Allgemeine Java-Themen 2
R Reguläre Ausdrücke (mehrzeilig) Allgemeine Java-Themen 2
X Punkte in einem Feld bestimmen Allgemeine Java-Themen 22
F Punkte in einem Bild finden Allgemeine Java-Themen 10
O Schon verbundene Punkte nicht erneut verbinden Allgemeine Java-Themen 7
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
J Konstrukt um alle Paare und Tripel einer Punkte-Menge bilden Allgemeine Java-Themen 12
H Shortcut ruft zwei Menu-punkte auf Allgemeine Java-Themen 5
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
G Graph mittels Punkte erstellen Allgemeine Java-Themen 27
T Slashes in String durch Punkte ersetzen Allgemeine Java-Themen 2
D abstand 2er punkte Allgemeine Java-Themen 18
A Punkte in HighScore Liste übernehmen? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben