Dieses Mal bringe ich Ihnen ein Tutorial zum Positionsabgleich (mit Code) für das Tutorial zum regulären Ausdruck. Was sind die Vorsichtsmaßnahmen für die Verwendung des Tutorials zum Positionsabgleich? der eigentliche Kampf Werfen wir einen Blick auf den Fall.
Das Beispiel in diesem Artikel beschreibt das Tutorial zum Positionsabgleich von regulären Ausdrücken. Geben Sie es wie folgt als Referenz an alle weiter:
Hinweis: In allen Beispielen sind die Ergebnisse der regulären Ausdrucksübereinstimmung im Quelltext [ und ], einige Beispiele werden mit Java implementiert. Wenn es sich um die Verwendung regulärer Ausdrücke in Java selbst handelt, wird dies an der entsprechenden Stelle erläutert. Alle Java-Beispiele werden unter JDK1.6.0_13 getestet.
1. Problemeinführung
Wenn wir ein bestimmtes Wort in einem Textstück zuordnen möchten (wobei wir den mehrzeiligen Modus vorerst nicht berücksichtigen). wird später vorgestellt), wir Es könnte so aussehen: Text:Gestern ist Geschichte, morgen ist ein Geheimnis, aber heute ist ein Geschenk.
Regulärer Ausdruck :ist
Ergebnis:Gestern 【ist】 h【ist】tory, morgen 【ist】 ein Rätsel, aber heute [ist] ein Geschenk.
Analyse: Ursprünglich wollte es nur mit dem Wort „ist“ übereinstimmen, aber es passte auch zu dem, was in anderen Worten enthalten ist. Um dieses Problem zu lösen, verwenden Sie Grenztrennzeichen, d. h. einige-Metazeichen in regulären Ausdrücken, um anzugeben, wo (oder Grenze) der Abgleichvorgang stattfinden soll.
2. Wortgrenzen
Eine häufig verwendete Grenze ist die durch das Qualifikationsmerkmal b angegebene Wortgrenze, die verwendet wird, um den Anfang und das Ende eines Wortes abzugleichen. Genauer gesagt entspricht es einer Position zwischen einem Zeichen, das zur Bildung eines Wortes verwendet werden kann (Buchstabe, Zahl, Unterstrich, das ist das Zeichen, das mit w übereinstimmt) und einem Zeichen, das nicht zur Bildung eines Wortes verwendet werden kann (wobei W mit Zeichen übereinstimmt). . Schauen wir uns das vorherige Beispiel an: Text:Gestern ist Geschichte, morgen ist ein Rätsel, aber heute ist ein Geschenk.
Regulärer Ausdruck:bisb
Ergebnis:Gestern [ist] Geschichte, morgen [ist]ein Rätsel, aber heute [ist]a gift.
Analyse: Im Originaltext steht vor und nach dem Wort is ein Leerzeichen, das dem Muster bisb entspricht (Leerzeichen ist eines der Zeichen, die zum Trennen von Wörtern verwendet werden). Das Wort „history“ enthält auch „is“, da davor und danach zwei Zeichen „h“ und „t“ stehen. Keines dieser beiden Zeichen kann mit „b“ übereinstimmen. Wenn eine Wortgrenze nicht übereinstimmt, wird B verwendet. Zum Beispiel: Text:Bitte geben Sie die neunstellige ID ein, wie sie auf Ihrem farbcodierten Passschlüssel erscheint.
Regulärer Ausdruck:B-B
Ergebnis:Bitte geben Sie die 【neunstellige】 ID ein, wie sie auf Ihrem farbcodierten 【Passschlüssel】 erscheint.
Analyse: B-B passt zu einem Bindestrich, der keine Wortgrenze vor und nach dem Bindestrich darstellt. Es gibt keine Leerzeichen vor und nach dem Bindestrich, daher können sie abgeglichen werden. Bei der Farbcodierung gibt es Leerzeichen vor und nach dem Bindestrich. Es gibt Leerzeichen, daher kann es nicht übereinstimmen.3. StringGrenze
Wortgrenze kann verwendet werden, um Positionen im Zusammenhang mit Wörtern abzugleichen (Wortanfang, Wortende, ganzes Wort). usw. warten). Zeichenfolgengrenzen haben einen ähnlichen Zweck, werden jedoch verwendet, um Positionen in Bezug auf Zeichenfolgen abzugleichen (Anfang der Zeichenfolge, Ende der Zeichenfolge, gesamte Zeichenfolge usw.). Es gibt zwei Metazeichen, die zum Definieren von Zeichenfolgengrenzen verwendet werden: eines ist ^, das den Anfang der Zeichenfolge definiert, und das andere ist $, das verwendet wird, um das Ende der Zeichenfolge zu definieren. Wenn Sie beispielsweise die Rechtmäßigkeit eines XML-Dokuments überprüfen möchten, beginnen alle legalen XML-Dokumente mit : Text:<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="ear"> </project>
正则表达式:^\s*<\?xml.*?\?>
结果:
分析:^匹配一个字符串的开头位置,所以^\s*将匹配一个字符串的开头位置和随后的零个或多个空白字符,因为标签前面允许有空格、制表符、换行符等空白字符。
$元字符符的用法除了位置上的差异外,与^用法完全一样。比如,检查一个html页面是否以