Dieser Artikel beschreibt die Funktionen und die Verwendung von regulären Surround -Betrachtungen und -Rücken in Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
Umblick
1. um das Konzept umgeben
Umzusehen, die sich umsehen, auch als Behauptung der Breite bekannt, abgekürzte Behauptung.
Die Surround -View betont die Position (vorne oder hinten), und der Ausdruck der Surround -View muss als erfolgreich abgestimmt werden.
Surround Viewing kann als zusätzliche Urteilsbedingung für die virtuelle Ergänzung seiner Lage betrachtet werden und konsumiert keine regulären passenden Zeichen.
2..
(? = Ausdruck) Die Reihenfolge ist positiv und der Ausdruck kann auf der rechten Seite des Standorts übereinstimmen.
(?! Ausdruck) Sequenznegation der umgebenden Betrachtung bedeutet, dass die rechte Seite des Ortes nicht mit dem Ausdruck übereinstimmen kann
(? <= Ausdruck) Umgekehrte Reihenfolge sieht sich positiv um und zeigt an, dass die linke Seite der Position mit dem Ausdruck übereinstimmen kann
(? <! Ausdruck) Reverse Order negiert die umgebende Ansicht, was darauf hinweist, dass die linke Seite der Position nicht mit dem Ausdruck übereinstimmen kann
HINWEIS: Die rechte Seite der Reihenfolge (=) stimmt überein, und die umgekehrte Surround -Ansicht hat mehr <als die sequentielle Surround -Ansicht.
JavaScript unterstützt nur die sequentielle Surround -Anzeige, unterstützt jedoch nicht umgekehrte Surround -Betrachtung.
Obwohl sowohl sequentielle Surround -View- als auch umgekehrte Surround -View in Java unterstützt werden, unterstützt die Umkehransicht umgekehrte Ordnung nur Ausdrücke mit einer Längenbestimmung. In umgekehrter Reihenfolge Surround View unterstützen Quantifizierer nur? und unterstützen Sie andere Quantifizierer nicht mit einer ungewisse Länge.
3. Verwenden Sie Beispiele
3.1. Sequenzbestätigung und umschauen sich um (? = Ausdruck)
3.1.1. Stimmen Sie den Dateinamen ohne Suffix mit dem Ende des Suffix ".txt" an.
【.+(? =/. Txt)】
Text:
txtFile.txt
exefile.exe
Inifile.ini
Übereinstimmungsergebnis: txtfile
3.1.2. Passwort übereinstimmen (muss Buchstaben (Fall unempfindlich), Zahlen, 6-16 Ziffern enthalten)
【^(? =.*? [A-za-z]) (?
(?
3.2. Sequenznegation der Surround View (?! Ausdruck)
3.2.1. Übereinstimmen andere Tags als <a> </a>
【<(?!/? A/b) [^<]+?>】
Text: <a> <a1> </a> Zxiaofan <div> com </d> iv> cc
Match -Ergebnis:
<A1>
<div>
</d>
3.2.2. Stimmen Sie den Dateinamen mit dem Suffix an, das nicht ".txt" am Ende des Suffix
【.+ (?!/. Txt)】 Expressionsfehler, weil.+ Keine angegebene Position hat und eine gierige Übereinstimmung ist. (So.+ kann direkt mit txtFile.txt übereinstimmen)
【(.+) (?!/. Txt)/. [^.]+$】
Text:
txtFile.txt
exefile.exe
Inifile.ini
Match -Ergebnis:
exefile.exe
Inifile.ini
3.3. Umgekehrte Bestätigung um (? <= Ausdruck)
3.3.1. Passen Sie den Inhalt zwischen den angegebenen Tags an
【(? <= <div>) [^<]+(? = </Div>)】
Text: <Div> zxiaofan.com </div>
Matching -Ergebnis: Zxiaofan.com
3.3.2. Erhalten Sie den Wert des angegebenen Parameters
【(? <= Name =).+】
Text:
name = zxiaofan
Alter = 20
Level = 6
Match -Ergebnis: Zxiaofan
3.4. Reverse Order Negation der Surround View (? <! Ausdruck)
3.4.1. Erhalten Sie den Wert nicht spezifizierter Parameter
【^[^=#]+= (? <! Name =).+$】
Text:
name = zxiaofan
Alter = 20
Level = 6
#Sex = 1
Match -Ergebnis:
Alter = 20
Level = 6
4. umfassende Beispiele
4.1. Muss Buchstaben, Zahlen und Sonderzeichen enthalten
【^(? =.*? [A-za-z]) (?
Erläuterung: ^(? =.*? [A-za-z]) Grenze muss Buchstaben haben; (? =.*?/d) Die Grenze muss Zahlen haben; (?! [A-Za-Z/D]+$) Limit kann nicht alle Zahlen und Buchstaben sein.
4.2. Passen Sie den Hauptdomainnamen an (passen Sie den Domain-Namen der obersten Ebene an).
【(? <= (? :: /// w {0,50}/.)?) (?
Text:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
Match -Ergebnis:
Zxiaofan.com.cn
Zxiaofan.com
Zxiaofan.org.cn
Hinweis: [?:] Erfassen Sie den passenden Text weder zu automatisch benannten Gruppen noch weisen sie dieser Gruppe Gruppen zu. (Es wird das Ergebnis nach der Entfernung nicht beeinflussen)
Spezieller Domainname: Wanwang www.net.cn
4.3. 5 aufeinanderfolgende Handynummern übereinstimmen
【1 [34578]/d {3} (/d) (?!/1 {1}) (/d)/2 {4}】
Text:
18328501111
183285111111
18328551111
183281111111
Match -Ergebnis:
183285111111
Note1:/1 entspricht dem ersten Inhaltssatz
Note2: (?!/1 {1}) Filter 6 aufeinanderfolgende Nummern
Backreferenzen
1. Backreference -Konzept
Capture -Gruppe: Unterteilen Sie in mehreren Gruppen gemäß der () Subexpression; Jedes Paar von () erscheint eine Erfassungsgruppe; Der Motor nummeriert die Erfassungsgruppe, und die Nummerierungsregel ist die linke Klammer (die Reihenfolge des Auftretens von links nach rechts ab 1.
Erfassungsgruppennamen:
(?
.
Rückreferenz:
/1 bedeutet die erste Gruppe (ABC); /2 bedeutet die zweite Gruppe;
/k <Word>: Bezieht sich auf die Gruppe mit dem angegebenen Namen.
2. Verwenden Sie Beispiele
2.1. Stimmen Sie den Dateinamen mit dem gleichen Anfang und Ende an
【([Az] {3}) [Az]+/./1 {1}】
Text:
txtFile.txt
exefile.txt
FileIni.ini
Match -Ergebnis:
txtFile.txt
HINWEIS: ([Az] {3}) ist die erste Gruppe, und /1 {1} bedeutet, dass sich einmal auf die erste Gruppe bezieht (sie kann hier nicht als /1 {3} geschrieben werden).
PS: Hier sind zwei sehr bequeme reguläre Ausdruckswerkzeuge für Ihre Referenz:
JavaScript regulärer Ausdruck Online -Test -Tool:
http://tools.vevb.com/regex/javaScript
Regelmäßiger Ausdruck Online -Generierungstool:
http://tools.vevb.com/regex/create_reg
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java Regules Expression Skills", "Java -Datenstruktur und Algorithmus -Tutorial", "Java Operation DOM -Knotenkenntnisse", "Java -Datei- und Verzeichnisbetriebsfähigkeiten" und "Java Operation Fertigkeitsberumei" Summary "-Fertigkeiten" anzeigen "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.