/ / Java - Escaping + Zeichen in RegEx - Java, Regex, String

Java - Escaping + Zeichen in RegEx - Java, Regex, String

Mein Code ist:

if (tokens.matches("true || false")){
checkAssignments (i+1);
return;
}
else{
\do something else
}

In diesem Codefragment ist der Wert von token standardmäßig auf "true" gesetzt. Das Steuerelement wechselt jedoch immer zum Teil else, was bedeutet, dass der reguläre Ausdruck als falsch ausgewertet wird.

Außerdem, wenn ich das Vorhandensein des Zeichens "+" in meiner Zeichenfolge überprüfen möchte, was wäre mein regulärer Ausdruck in Java. Ich habe es versucht :

token.matches(\+);

und

token.matches(\Q+\E);

aber keine dieser arbeiten. Jede Hilfe wäre wirklich dankbar.

Antworten:

1 für die Antwort № 1

Das Steuerelement wechselt jedoch immer zum Teil else, was bedeutet, dass der reguläre Ausdruck als falsch ausgewertet wird.

Beachten Sie, dass Sie ein Leerzeichen nachher haben true in deinem Regex. Das wird nicht ignoriert. Es passt zu einer Zeichenfolge "true "mit Leerzeichen am Ende. Ebenfalls, || ist nicht ein OR in Regex. Es ist nur eine Pfeife - |.

Das wird also gut funktionieren:

if (token.matches("true|false")) {
checkAssignments (i+1);
return;
} else {
// do something else
}

Wenn ich das Vorhandensein des Zeichens "+" in meiner Zeichenfolge überprüfen möchte, was wäre mein regulärer Ausdruck in Java.

Warum brauchen Sie Regex dafür, anstatt es zu verwenden? String#contains() Methode?


1 für die Antwort № 2

Verwenden Sie die Pipe "|", um zwischen mehreren Alternativen zu wählen und eine Übereinstimmung zuzulassen, wenn eine der beiden erfüllt ist. Symbol zur Trennung der Alternativen:

if (tokens.matches("true|false")) {
// ...
}

Um zu überprüfen, ob Ihre String enthält +können Sie den folgenden regulären Ausdruck verwenden:

if (string.matches(.*\+.*)) { ... }

1 für die Antwort № 3

matches() Führe einen Abgleich über die gesamte Zeichenfolge mit deinem Regex durch. Ein Teil davon wird nicht überprüft.

Beispielsweise:

 "this+this".matches("\+"); // returns false

"+".matches("\+"); // returns true

"this+this".matches(".*\+.*"); // returns true