Schlüsselworte Unterschied: String.matches und Pattern.compile

mariomueller

Mitglied
Guten morgen zusammen,

sorry vorab: Ich finde im Editor leider keinen Button, um Coding als "Coding" zu formattieren (z.B. Courier New)

Warum sind denn die Ergebnisse unterschiedlich, bei den Befehlen

Ich habe das Coding

String searchString = "Die Isar und die Isarauen";
String pattern = "\\bIsar\\b"; // sucht nach Isar als ganzes Wort
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(searchString);

while (m.find())
{
System.out.println("Treffer startet ab\t"+m.start() + " ");
System.out.println("Treffer endet bei\t"+m.end() + " ");
}
System.out.println("text.matches\t"+searchString.matches(pattern));


Das Ergebnis ist

Treffer startet ab 4
Treffer endet bei 8
text.matches false

Warum findet der Ausdruck in der While-Schleife einen Treffer und String.matches(pattern) keinen Treffer. Ich dachte, der String.matches wertet auch eine RegEx aus und soollte somit das selbe machen?

Danke, Viele Grüße
Mario
 
Ich finde im Editor leider keinen Button, um Coding als "Coding" zu formattieren
Das kann ich sicher beantworten: Es ist der vierte von rechts.

Zur eigentlichen Frage kann ich nur eine Vermutung aussprechen: In der Dokumentation liest es sich so, als würde String.matches() nur TRUE ausgeben, wenn der gesamte String dem RegEx entspricht, z.B. zum Verifizieren von Mailadressen.
Returns:
true if, and only if, this string matches the given regular expression
Edit: Es sollte demnach m.matches() entsprechen.
 
Intern verwendet String.matches die Methode Pattern.matches. Es gibt hier und da einige online Regexp-Tester. Die zeigten für das Beispiel auch nur matches=true an, wenn nur das Wort Isar alleinig vorkam.
 

Zurück
Oben