RegEx - Worte ausschließen

Pfaeff

Aktives Mitglied
Hallo,

Ich habe einen regulären Ausdruck der Worte einer bestimmten Form akzeptiert.
Nehmen wir mal als Beispiel "[a-z]*". Nun möchte ich aber, dass einige Worte nicht erlaubt sind, beispielsweise "cde".
Bisher mache ich es so, dass ich abfrage
Java:
if (wort == "cde") return false;
.
Ich möchte dies allerdings in den regulären Ausdruck integrieren. Ich habe schon einiges versucht, z.B.
"^(\bcde\b)&&[a-z]*" aber dies scheint nicht zu funktionieren.
Gibt es eine Möglichkeit, so etwas zu realisieren?

Vielen Dank
 

Sekundentakt

Bekanntes Mitglied
Schau mal hier nach: Reguläre Ausdrücke

Das \x20 steht für ein Leerzeichen.

Mit dem Fragezeichen definiere ich, dass Müller ein bzw. keinmal vorkommt. Durch das anschließende Ausrufezeichen definiere ich dann, dass Müller zwar ein bzw. keinmal vorkommt, aber wenn es vorkommt, soll es negiert (nicht gematcht) werden.
Das "|" ist eine Oder-Bedingung. Also entweder steht hinter Maria "LEERZEICHEN Müller" oder nur "Müller". Wenn das der Fall ist, dann wird sie nicht gefunden.
Heißt sie aber Maria Mustermann wird sie gefunden.
 
Zuletzt bearbeitet:

Pfaeff

Aktives Mitglied
Das habe ich soweit verstanden. Vielleicht ist das Beispiel auch ein wenig ungünstig gewählt.
Mit (?!cde) könnte ich sagen, dass nach dem vorhergehenden Wort, cde nicht kommen darf, wie kann ich jetzt aber weitere Bedingungen spezifizieren? Nehmen wir mal mein Beispiel:

Worte aus [a-z]* und cde und xyz sind nicht erlaubt. Wäre das so etwas? ([a-z]*)&&(?!cde)&&(?!xyz) ?
 

André Uhres

Top Contributor
Versuch's mal so:
Java:
import java.util.regex.*;
public class Regex {
    public Regex() {
        test("aha cde oho 123 cdee xyz");//aha oho cdee
    }
    private void test(final String subjectString) {
// \b(?:(?!(?>\bcde\b|\bxyz\b))[a-z])+\b
//
// Assert position at a word boundary «\b»
// Match the regular expression below «(?:(?!(?>\bcde\b|\bxyz\b))[a-z])+»
//    Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
//    Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?!(?>\bcde\b|\bxyz\b))»
//       Atomic group.  Match the regex below, and do not try further permutations of it if the overall match fails. «(?>\bcde\b|\bxyz\b)»
//          Match either the regular expression below (attempting the next alternative only if this one fails) «\bcde\b»
//             Assert position at a word boundary «\b»
//             Match the characters "cde" literally «cde»
//             Assert position at a word boundary «\b»
//          Or match regular expression number 2 below (the entire group fails if this one fails to match) «\bxyz\b»
//             Assert position at a word boundary «\b»
//             Match the characters "xyz" literally «xyz»
//             Assert position at a word boundary «\b»
//    Match a single character in the range between "a" and "z" «[a-z]»
// Assert position at a word boundary «\b»
        Pattern regex = Pattern.compile("\\b(?:(?!(?>\\bcde\\b|\\bxyz\\b))[a-z])+\\b");
        Matcher regexMatcher = regex.matcher(subjectString);
        while (regexMatcher.find()) {
            System.out.print(regexMatcher.group() + " ");
        }
        System.out.println("");
    }
    public static void main(String[] args) {
        new Regex();
    }
}
 

Sekundentakt

Bekanntes Mitglied
Ich verstehe den Sinn gerade nicht.
Wenn Du Worte mit allen Buchstaben von a-z ausschließen willst, brauchst Du auf den Rest nicht mehr prüfen. Meinst Du aber, dass Du alle Worte a-z matchen willst, außer cde und xyz (wie im Eingangsposting erwähnt), dann ist der Code fast richtig.

Mit diesem Teil schließt Du nur die Zeichenfolgen cde und xyz aus. Sprich, wenn dein Wort Javaxyz heißt, wird es nicht gematcht.
Heißt es aber Xylophon wird es gematcht.
Nach deinem obigen RegEx-Fragment würdest Du alle Worte ausschließen, die die Zeichen cde UND xyz enthalten. Ich glaube aber, dass Du eher meinst: schließe alle Worte aus, die cde ODER xyz enthalten, richtig?

Wenn cde und xyz aber für ganze Worte stehen sollen, würde ich vor und nach cde/xyz noch Leerzeichen setzen. Deinen String, den du prüfen willst, müsstest du aber auch verändern: Du musst an den Anfang und an das Ende Leerzeichen ranhängen.
 

André Uhres

Top Contributor
Ich hab's so verstanden:
Alle Worte aus [a-z]+ mit Ausmahme der Worte "cde" und "xyz".
Mein obiger Code zeigt eine mögliche Implementierung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Frage regex greater than less than Allgemeine Java-Themen 7
N Regex schlägt nicht an Allgemeine Java-Themen 10
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
T regex case insensitive trimmed Allgemeine Java-Themen 6
S Zeichen | in regex Allgemeine Java-Themen 8
X Regex mit mehreren Bedingungen machen Allgemeine Java-Themen 5
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
C Java17 und Regex Allgemeine Java-Themen 13
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
OnDemand Regex von bis Allgemeine Java-Themen 6
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
G Regex Allgemeine Java-Themen 2
L regex ganzer string? Allgemeine Java-Themen 2
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
W RegEx Stringliteral finden - Jflex Allgemeine Java-Themen 5
D Regex Probleme Allgemeine Java-Themen 2
Kirby.exe Regex charakter ignorieren Allgemeine Java-Themen 12
S Java SAT (Haltbarkeitsproblem) mit Regex Allgemeine Java-Themen 6
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
S Regex mit UND-Verknüpfung Allgemeine Java-Themen 1
P RegEx für Zeiten Allgemeine Java-Themen 7
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P RegEx Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
Y regex | n-faches Vorkommen oder gar keins Allgemeine Java-Themen 6
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
HarleyDavidson Regex - Optimierung Allgemeine Java-Themen 4
M Regex für Zahleneingabe in JavaFX Textfield Allgemeine Java-Themen 18
T Best Practice Wortregeln RegEx Allgemeine Java-Themen 11
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
H Interpreter-Fehler Regex kompiliert nicht Allgemeine Java-Themen 5
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
Iron Monkey Mit Regex nach Beträge suchen Allgemeine Java-Themen 4
T REGEX Erklaerung Allgemeine Java-Themen 14
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
H Pic Download / Regex Problem Allgemeine Java-Themen 7
F Frage zu Regex möglich Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
H RegEx - Ersetze alles bis Leerzeichen Allgemeine Java-Themen 5
S regex verbrät CPU Allgemeine Java-Themen 6
V Regex Bereichs Filter Allgemeine Java-Themen 4
127.0.0.1 RegEx _ und 0-9 Allgemeine Java-Themen 45
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
P Java String Regex Allgemeine Java-Themen 2
AyKay Regex XPath Allgemeine Java-Themen 4
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
D Regex Raute erkennen Allgemeine Java-Themen 2
nrg Zweistelligen Zahlenbereich mit RegEx Allgemeine Java-Themen 8
GilbertGrape Regex-Problem Allgemeine Java-Themen 2
W Denkblockade RegEx Allgemeine Java-Themen 2
S eigene regEx schreiben Allgemeine Java-Themen 4
C Regex expandieren Allgemeine Java-Themen 6
C Regex Überschniedung von Ausdrücken Allgemeine Java-Themen 16
reibi RegEX - Teilstring Allgemeine Java-Themen 6
R Java-RegEx terminiert nicht Allgemeine Java-Themen 3
M Regex: Ich stehe auf dem Schlauch Allgemeine Java-Themen 2
V Kleines Regex-Problem Allgemeine Java-Themen 3
B Regex "Problem" Allgemeine Java-Themen 4
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
J Regex: Fertige URLS aus Javascript Allgemeine Java-Themen 3
N Java regex Allgemeine Java-Themen 5
K Regex JSON Allgemeine Java-Themen 3
J RegEx Ausdruck Allgemeine Java-Themen 2
J Regex: URLS aus CSS Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
G RegEx kein Unterstrich Allgemeine Java-Themen 2
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
R Java Regex Frage Allgemeine Java-Themen 17
Daniel_L RegEx-Frage: Ersetzen in UBB ausschließen Allgemeine Java-Themen 2
M Große Datei mit Regex durchsuchen Allgemeine Java-Themen 4
S regex für einen Link Allgemeine Java-Themen 3
E Regex alles nach ? löschen Allgemeine Java-Themen 4
M RegEx-Frage Allgemeine Java-Themen 2
R Regex Tokenizer Allgemeine Java-Themen 11
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
H RegEX und eMail Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
nrg Kleine Hilfe mit RegEx Allgemeine Java-Themen 2
B Regex-Fehler nach lib-Update Allgemeine Java-Themen 2
K Contrains oder Regex Allgemeine Java-Themen 3
J replaceAll , "[", "]" & regex Allgemeine Java-Themen 12
P RegEx und $-Zeichen als Literal Allgemeine Java-Themen 5
S Regex - was isst denn {javaLetter} und {javaDigit}? Allgemeine Java-Themen 2
D Wie werden Regex-Gruppen kompiliert? Allgemeine Java-Themen 2
Stillmatic RegEx Matches ausgeben Allgemeine Java-Themen 10
A Regex gesucht Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben