JavaRush /Java-Blog /Random-DE /Backlinks in regulären Java-Ausdrücken
eGarmin
Level 41

Backlinks in regulären Java-Ausdrücken

Veröffentlicht in der Gruppe Random-DE
Rückverweise in regulären Java-Ausdrücken sind eine sehr nützliche Funktion, die von der Java-Engine unterstützt wird . Um zu verstehen, was Backlinks sind, müssen Sie zunächst verstehen, was eine Gruppe ist . Die Gruppe in regulären Ausdrücken behandelt mehrere Zeichen als eine Einheit. Gruppen werden erstellt, indem Zeichen in Klammern gesetzt werden – „()“. Ein Klammerpaar ist eine Gruppe. Backlinks sind praktisch, weil wir Suchmuster wiederholen können, ohne sie direkt zu kopieren. Wir müssen lediglich auf eine zuvor definierte Gruppe verweisen, indem wir eine Konstruktion wie \N verwenden , wobei N die Gruppennummer ist. Die folgenden 2 Beispiele geben Ihnen einen Eindruck davon, wie praktisch Backlinks sind.
Beispiel 1: Finden eines sich wiederholenden Musters
Eine Konstruktion der Form (\d\d\d)\1 passt zu Zeile 123123, aber nicht zu Zeile 123456. String str = "ля123123ля"; Pattern p = Pattern.compile("(\\d\\d\\d)\\1"); Matcher m = p.matcher(str); System.out.println(m.groupCount()); while (m.find()) { String word = m.group(); System.out.println(word + " " + m.start() + " " + m.end()); } Ausgabe: 1 123123 2 8 Anmerkung des Übersetzers! Hier möchte ich mir als Übersetzer ein wenig die Freiheit nehmen und Kommentare von mir selbst einfügen, denn Ich lerne gerade selbst etwas über reguläre Ausdrücke und hoffe, dass sie mich mit Schimpfwörtern korrigieren :) Wenn das, was ich unten schreibe, ein Fehler ist: 1) Die Methode groupCount () gibt die im Muster angegebene Anzahl von Gruppen zurück, also gerade Wenn die Eingabezeichenfolge „la123“ 456 la“ lautet, was nicht in die Vorlage passt, wird weiterhin die Zahl 1 auf dem Bildschirm angezeigt. 2) Die Methode find() sucht nach der nächsten Gruppe, gibt jedoch nur einen booleschen Wert zurück : true – gefunden, false – nicht gefunden 3) group()- Methode Gibt den letzten Teilstring zurück, der im Muster gefunden wurde. In diesem Fall 123123 4) Die start()- Methode Gibt die Position des gefundenen Teilstrings im Quellstring zurück (Nummerierung natürlich beginnend bei Null). 5) Die end()- Methode Gibt die Position im Quellstring zurück, die unmittelbar auf den Fund folgt Teilzeichenfolge. Dieser Wert zeigt also nicht auf das letzte Zeichen des gefundenen Teilstrings im Quellstring, sondern auf das nächste darauf.
Beispiel 2: Doppelte Wörter finden
String pattern = "\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b"; Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); String phrase = "unique is not duplicate but unique, Duplicate is duplicate."; Matcher m = p.matcher(phrase); while (m.find()) { String val = m.group(); System.out.println("Найденная последовательность символов: \"" + val + "\""); System.out.println("Слово-дубликат: " + m.group(1) + "\n"); } Fazit: Найденная последовательность символов: "unique is not duplicate but unique" Слово-дубликат: unique Найденная последовательность символов: "Duplicate is duplicate" Слово-дубликат: Duplicate Bitte beachten Sie, dass diese Methode zum Auffinden doppelter Wörter (mithilfe regulärer Ausdrücke) nicht optimal ist. Im obigen Beispiel wird beispielsweise das erste Wort „Duplikat“ übersprungen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION