Cet article décrit les fonctions et l'utilisation de la visualisation et des back-références du surround ordinaires en Java. Partagez-le pour votre référence, comme suit:
Autour de la vue
1. Entourant le concept
En regardant autour de lui, également connu sous le nom d'affirmation de largeur zéro, affirmation abrégée.
La vue surround met l'accent sur la position (avant ou arrière), et l'expression de la vue surround doit être appariée pour réussir.
L'observation surround peut être considérée comme une condition de jugement supplémentaire pour l'ajout virtuel à son emplacement et ne consomme pas de personnages correspondants réguliers.
2. En regardant autour de l'expression de base
(? = Expression) L'ordre est positif et l'expression peut être appariée sur le côté droit de l'emplacement.
(?! Expression) La négation de séquence de la vision environnante signifie que le côté droit de l'emplacement ne peut pas correspondre à l'expression
(? <= Expression) L'ordre inverse regarde positivement autour de lui, indiquant que le côté gauche de la position peut correspondre à l'expression
(? <! Expression) L'ordre inverse nie la vue environnante, indiquant que le côté gauche de la position ne peut pas correspondre à l'expression
Remarque: le côté droit de l'ordre (=) correspond, et la vue surround de l'ordre inverse a plus <que la vue surround séquentielle.
JavaScript prend en charge uniquement la vision surround séquentielle, mais ne prend pas en charge la vision surround inverse.
Bien que la vue surround séquentielle et la vue surround de l'ordre inverse soient pris en charge en Java, la vue surround de l'ordre inverse ne prend en charge que les expressions avec une détermination de la longueur. Dans la vue surround de l'ordre inverse, les quantificateurs ne soutiennent que? et ne supportez pas d'autres quantificateurs d'une longueur incertaine.
3. Utilisez des exemples
3.1. Affirmation de séquence et regardez autour de vous (? = Expression)
3.1.1. Faites correspondre le nom de fichier sans suffixe avec la fin du suffixe ".txt"
【. + (? = /. Txt)】
texte:
txtfile.txt
exefile.exe
Inifile.ini
Résultat de la correspondance: txtfile
3.1.2. Faire correspondre le mot de passe (doit contenir des lettres (cas insensible), des chiffres, 6-16 chiffres)
【^ (? =. *? [A-za-z]) (? =. *? [0-9]) [a-za-z0-9] {6,16} $】
(? =. *? [a-za-z]) Définit au moins une lettre dans les caractères suivants, utilise (? =. *? [0-9]) Pour définir au moins un numéro dans les caractères suivants, et définit enfin le quantificateur en correspondant réellement à la normale [A-ZA-Z0-9] {6,16}.
3.2. Négation de séquence de vue surround (?! Expression)
3.2.1. Faire correspondre des balises autres que <a> </a>
【<(?! /? A / b) [^ <] +?>】
Texte: <a> <a1> </a> zxiaofan <div> com </d> iv> cc
Résultat de la correspondance:
<a1>
<div>
</d>
3.2.2. Faites correspondre le nom du fichier avec le suffixe qui n'est pas ".txt" à la fin du suffixe
【. + (?! /. Txt)】 erreurs d'expression parce que. + N'a pas de position spécifiée et est une correspondance gourmand. (So. + peut correspondre directement à txtfile.txt)
【(. +) (?! /. Txt) /. [^.] + $】
texte:
txtfile.txt
exefile.exe
Inifile.ini
Résultat de la correspondance:
exefile.exe
Inifile.ini
3.3. Affirmation de l'ordre inversé autour (? <= Expression)
3.3.1. Faites correspondre le contenu entre les balises spécifiées
【(? <= <div>) [^ <] + (? = </div>)】
Texte: <div> zxiaofan.com </div>
Résultat correspondant: zxiaofan.com
3.3.2. Obtenez la valeur du paramètre spécifié
【(? <= Name =). +】
texte:
nom = zxiaofan
Âge = 20
niveau = 6
Résultat de la correspondance: zxiaofan
3.4. Négation de l'ordre inversé de la vue surround (? <! Expression)
3.4.1. Obtenez la valeur des paramètres non spécifiés
【^ [^ = #] + = (? <! Name =). + $】
texte:
nom = zxiaofan
Âge = 20
niveau = 6
# sexe = 1
Résultat de la correspondance:
Âge = 20
niveau = 6
4. Exemples complets
4.1. Doit contenir des lettres, des chiffres et des caractères spéciaux
【^ (? =. *? [A-za-z]) (? =. *? / D) (?! [A-za-z / d] + $). + $】
Explication: ^ (? =. *? [A-za-z]) La limite doit avoir des lettres; (? =. *? / d) La limite doit avoir des nombres; (?! [a-za-z / d] + $) La limite ne peut pas être tous les nombres et les lettres.
4.2. Faites correspondre le nom de domaine principal (correspondez au nom de domaine de niveau supérieur)
【(? <= (? :: /// w {0,50} /.)?) (?: / W {0,50} /.) (?: com / .cn | net / .cn | org / .cn | com | net | org | cn | biz | info | cc | tv)】
texte:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
Résultat de la correspondance:
zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn
Remarque: [?:] Ne capturez pas le texte correspondant aux groupes nommés automatiquement, ni n'attribuent des groupes à ce groupe. (Cela n'affectera pas le résultat après le retrait)
Nom de domaine spécial: wanwang www.net.cn
4.3. Faites correspondre 5 numéros de téléphone mobile consécutifs
【1 [34578] / d {3} (/ d) (?! / 1 {1}) (/ d) / 2 {4}】
texte:
18328501111
183285111111
18328551111
18328111111
Résultat de la correspondance:
183285111111
Note1: / 1 correspond au premier ensemble de contenu
Remarque2: (?! / 1 {1}) Filtre 6 numéros consécutifs
Références en arrière
1. Concept de référence en arrière
Groupe de capture: divisez en plusieurs groupes selon la sous-expression (); Chaque paire de () apparaît est un groupe de capture; Le moteur comptera le groupe de capture et la règle de numérotation est le support de gauche (l'ordre d'occurrence de gauche à droite, à partir de 1.
Capture de dénomination du groupe:
(? <nom> exp) Faire correspondre Exp et capturer le texte dans un groupe nommé nom, qui peut également être écrit comme (? 'name'Exp);
(?: Exp) Match Exp, ne capture pas le texte correspondant au groupe nommé automatiquement, ni n'attribue un numéro de groupe à ce groupe.
Détalonnel:
/ 1 signifie le premier groupe (ABC); / 2 signifie le deuxième groupe;
/ k <ord>: fait référence au groupe avec le nom spécifié.
2. Utilisez des exemples
2.1. Faites correspondre le nom du fichier avec le même début et fin
【([Az] {3}) [az] + /. / 1 {1}】
texte:
txtfile.txt
exefile.txt
fileini.ini
Résultat de la correspondance:
txtfile.txt
Remarque: ([az] {3}) est le premier groupe, et / 1 {1} signifie se référer au premier groupe une fois (il ne peut pas être écrit comme / 1 {3} ici).
PS: Voici deux outils d'expression régulière très pratiques pour votre référence:
Tool de test en ligne d'expression régulière JavaScript:
http://tools.vevb.com/regex/javascript
Outil de génération en ligne d'expression régulière:
http://tools.vevb.com/regex/create_reg
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Java régulière des compétences d'expression", "Structure de données Java et tutoriel d'algorithme", "Java Operation Dom Node Skills", "Java Fichier et Directory Operation Skills Summary" et "Java Cache Operation Skills Skills"
J'espère que cet article sera utile à la programmation Java de tous.