2016-04-09 4 views
0

Ich bin vor kurzem in Regex Sachen gekommen. Es gibt etwas, das mich wirklich sehr nervt.Java Regex, wie man die Übereinstimmung stoppt, wenn ein bestimmtes Symbol gefunden wird

Wie kann ich meine Regex so einstellen, dass nur bestimmte Wörter übereinstimmen, WENN es kein bestimmtes Symbol gibt, das ihnen folgt? Zum Beispiel Angenommen, ich habe einen Text mit einigen normalen Wörtern und einige Wörter, die mit einem Großbuchstaben enden. Wie bekomme ich meine Regex nur dazu, ein Wort zu erkennen, wenn auf dieses Wort kein Großbuchstabe folgt?

Just some sample texT with wordS. ThiS should be Matched. 

Daraus möchte ich meine reggex alle Wörter entsprechen, mit Ausnahme von „-Text, Worte und dieses“.

Vielen Dank im Voraus für jede Hilfe :)

Antwort

0

Sie es in wenigen Möglichkeiten tun konnte. Man könnte beinhalten .

\b kann nur Orte passen die

  • zwischen alphabetischen und nicht-alphabetische Zeichen
  • am Anfang oder Ende des Eingangs sind

So sicherstellen, dass wir passen ganze Wörter können wir \w+ mit \b wie \b\w+\b umgeben.
Um sicherzustellen, dass die Wörter, die Sie gefunden haben, nicht mit Großbuchstaben enden, können Sie einfach verlangen, dass das letzte Zeichen klein geschrieben wird (im Bereich a-z).

So können wir unsere Regex \b\w+[a-z]\b

+0

umschreiben Hmm dies löst fast mein Problem. (in der Tat löst es die, die ich beschrieben habe 100%) .. aber ich habe mich über etwas anderes gewundert. Wie könnte ich auch Wörter ignorieren, die in einer Zahl enden? Zum Beispiel "someE ##### word21" ... Wie würde ich "Som" und "Word" daraus extrahieren? – Kobek

+0

@Kobek Sorry für AFK, hatte Probleme mit der Verbindung. In diesem speziellen Fall könntest du einfach nur nach Kleinbuchstaben wie '[az] +' suchen, aber etwas sagt mir, dass dies möglicherweise auch nicht das ist, was du * wirklich * erreichen willst. – Pshemo

+0

@Kobek Da stimmst du zu, dass diese Antwort gelöst ist Problem beschrieben in Frage betrachten [akzeptieren] (http://meta.stackexchange.com/a/5235/186652). Lass mich auch wissen, ob die Lösung aus meinem vorherigen Kommentar für dich funktioniert hat. – Pshemo

Verwandte Themen