Methode funktioniert nicht gut [duplizieren]

7

Ich verstehe nicht, warum die Methode mit dieser Regex false zurückgibt;

%Vor%

das Zeichen i ist an einer Wortgrenze!

    
xdevel2000 08.07.2010, 09:16
quelle

3 Antworten

14

In Java versucht matches , ein Muster mit der gesamten Zeichenfolge abzugleichen.

Dies gilt für String.matches , Pattern.matches und %Co_de% .

Wenn Sie überprüfen möchten, ob in einer Zeichenfolge eine Übereinstimmung vorhanden ist, können Sie Matcher.matches verwenden. In diesem Fall ist es als Java-String-Literal .*\bi.* .

".*\bi.*" API-Links

Was boolean matches() bedeutet

Wie hier verwendet, ist der Punkt .* ein Regex-Metazeichen, das (fast) jedes Zeichen bedeutet. . ist ein Regex-Metazeichen, das "Null oder mehr Wiederholung von" bedeutet. So steht beispielsweise * für A.*B , gefolgt von null oder mehr Zeichen für "any", gefolgt von A ( siehe auf rubular.com ).

Referenzen

Verwandte Fragen

Beachten Sie, dass sowohl .* als auch . (sowie andere Metazeichen) ihre spezielle Bedeutung verlieren können, je nachdem, wo sie erscheinen. * ist eine Zeichenklasse, die entweder einem Literalzeitraum [.*] oder einem Literal-Sternchen . entspricht. Vor einem Backslash werden auch Metazeichen entfernt, sodass * mit a\.b übereinstimmt.

Verwandte Probleme

Java verfügt nicht über Regex-basierte "a.b" , endsWith und startsWith . Sie können contains weiterhin verwenden, um die folgenden Schritte auszuführen:

  • matches - enthält es irgendwo eine Übereinstimmung des Musters ?
  • matches(".*pattern.*") - Beginnt es mit einer Übereinstimmung des Musters ?
  • matches("pattern.*") - endet es mit einer Übereinstimmung des Musters ?

matches(".*pattern") API Schneller Spickzettel

Hier ist ein kurzer Spickzettel, der aufzeigt, welche Methoden regexbasiert sind und welche nicht:

polygenelubricants 08.07.2010, 09:20
quelle
5

Die ganze Zeichenfolge muss übereinstimmen, wenn Sie Übereinstimmungen verwenden:

%Vor%

Dies ermöglicht 0 oder mehr Zeichen davor und danach. Oder:

%Vor%

sagt Ihnen, ob ein Teilstring übereinstimmt (in diesem Fall true). Als eine Anmerkung kann das Kompilieren von Regexen und deren Beibehalten die Leistung verbessern.

    
Matthew Flaschen 08.07.2010 09:20
quelle
2

Ich verstehe nicht, warum Java sich entschieden hat, in die entgegengesetzte Richtung von Sprachen wie Perl zu gehen, die regex seit Jahren nativ unterstützen. Ich warf den Standard-Java-Regex weg und begann meine eigene Perl-Regex-Bibliothek für Java namens MentaRegex zu verwenden. Siehe unten, wie Regex in Java Sinn machen kann.

Die Methode stimmt mit überein, gibt einen booleschen Wert zurück, der angibt, ob eine Regex-Übereinstimmung vorliegt oder nicht.

%Vor%

Die Methode Übereinstimmung gibt ein Array mit den übereinstimmenden Gruppen zurück. So sagt es Ihnen nicht nur, ob Sie eine Übereinstimmung haben oder nicht, sondern es gibt auch die Gruppen zurück, die übereinstimmen, falls Sie eine Übereinstimmung haben.

%Vor%

Mit der Methode sub können Sie Substitutionen mit Regex durchführen.

%Vor%

Unterstützt die globale und die Groß- / Kleinschreibung ohne Berücksichtigung von Groß- und Kleinschreibung.

%Vor%

Erlaubt das Ändern des Escape-Zeichens, falls Sie nicht so viele '\' sehen möchten.

%Vor%     
TraderJoeChicago 28.09.2011 20:04
quelle

Tags und Links