Verwenden von Regex zum Abgleichen aller Zeichen außer =

Lesezeit: 2 Minuten

Ich versuche, eine String-Validierung zu schreiben, die mit jedem Zeichen (normal, ziffern- und speziell) außer = übereinstimmt.

Hier ist, was ich geschrieben habe –

    String patternString = "[[^=][\\w\\s\\W]]*";
    Pattern p = Pattern.compile(patternString);
    Matcher m = p.matcher(str);

    if(m.matches())
        System.out.println("matches");
    else
        System.out.println("does not");

Aber es stimmt mit dem Muster mit der Eingabezeichenfolge “2009-09/09 12:23:12.5=” überein.

Wie kann ich = (oder ein anderes Zeichen) aus der Musterzeichenfolge ausschließen?

  • Was versuchst du abzugleichen? (oder nicht)? nur [^=]* passt auf alles außer dem ‘=’-Zeichen.

    – Guillaume Polet

    19. März 2012 um 13:17 Uhr

  • Sie können Zeichenklassen nicht verschachteln. [[] ist einfach eine Zeichenklasse, die aus dem einzelnen Zeichen besteht [.

    – tripleee

    Mar 19, 2012 at 13:25

tripleee's user avatar
tripleee

If the only prohibited character is the equals sign, something like [^=]* sollte arbeiten.

[^...] ist eine negierte Zeichenklasse; es stimmt mit einem einzelnen Zeichen überein, das ein beliebiges Zeichen außer einem aus der Liste zwischen den eckigen Klammern ist. * wiederholt den Ausdruck null oder mehrmals.

  • Wie kann ich machen [^=]* passen \nauch?

    – Cameron Hudson

    11. Juni 2021 um 17:36 Uhr

  • Ich bin zwar kein Java-Mensch, aber mein erster Suchmaschinentreffer war stackoverflow.com/a/30315738/874188

    – Dreier

    11. Juni 2021 um 17:49 Uhr

  • Hmm, danke, aber mein spezieller Anwendungsfall ist das Suchen und Ersetzen in VSCode.

    – Cameron Hudson

    13. Juni 2021 um 5:19 Uhr

Zunächst einmal brauchen Sie keinen regulären Ausdruck. Einfach anrufen contains:

if(str.contains("="))
    System.out.println("does not");
else
    System.out.println("matches");

Der richtige reguläre Ausdruck, den Sie suchen, ist einfach

String patternString = "[^=]*";

  • Dies kann für das Originalplakat sehr hilfreich sein. Aber diese Antwort ist sehr weit von dem spezifischen Text der Frage entfernt, der Tausende von anderen zu dieser Seite führt. Diese Alternative hat viel weniger Wert für sie.

    – ctpenrose

    11. März 2019 um 16:55 Uhr

Wenn Ihr Ziel darin besteht, keine =-Zeichen in Ihrer Zeichenfolge zu haben, versuchen Sie bitte Folgendes

String patternString = "[^=]*";

Moodywoodys Benutzer-Avatar
stimmungsvoll

Wenn Sie nur auf das Vorkommen von “=” prüfen möchten, warum verwenden Sie nicht die Methode String indexOf()?

if str.indexOf('=')  //...

1436270cookie-checkVerwenden von Regex zum Abgleichen aller Zeichen außer =

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy