Maison >Java >javaDidacticiel >Introduction détaillée aux expressions régulières Java

Introduction détaillée aux expressions régulières Java

PHP中文网
PHP中文网original
2017-06-22 14:52:381330parcourir

Signification de l'expression :

x caractère x. Par exemple, a représente le caractère a
\ caractère barre oblique inverse. Lors de l'écriture, écrivez-le sous la forme \\. (Remarque : étant donné que Java analyse \\ en une expression régulière\ lors de la première analyse, puis l'analyse en une expression régulière lors de la deuxième analyse, tout caractère d'échappement qui n'est pas répertorié dans 1.1, y compris \ dans 1.1, est Tout avec must être écrit deux fois)

(peut ou non correspondre au terminateur de ligne)
d Nombres : [0-9]
D Non-chiffres : [^0-9]
s Caractères d'espacement : [tnx0Bfr]
S Caractères autres que des espaces : [^s]
w Caractères de mots : [a-zA-Z_0-9]
W Caractères autres que des mots : [^w]
Classe de caractères POSIX (US. uniquement -ASCII) (Notez que la barre oblique inverse doit être écrite deux fois, par exemple, p{Lower} s'écrit \p{Lower})
p{Lower} Caractères alphabétiques minuscules : [a-z].
p{Upper} Caractères alphabétiques majuscules : [A-Z]
p{ASCII} Tous les ASCII : [x00-x7F]
p{Alpha} Caractères alphabétiques : [p{Lower}p{Upper}]
p{Digit} Chiffres décimaux : [0-9]
p{Alnum} Caractères alphanumériques : [p{Alpha}p{Digit}]
p{Punct} Ponctuation : !"#$% &' ()*+,-./:;<=>?@[]^_`{|}~
p{Graph} Caractères visibles : [p{Alnum}p{Punct}]
p {Print} Caractères imprimables : [p{Graph}x20]
p{Blank} Caractère d'espace ou de tabulation : [t]
p{Cntrl} Caractères de contrôle : [x00-x1Fx7F]
p{XDigit} Chiffres hexadécimaux : [0-9a-fA-F]
p{Espace} Caractères vides : [tnx0Bfr]
Classe 5.java.lang.Character (type de caractère Java simple)
p{javaLowerCase} Équivalent à java.lang.Character.isLowerCase()
p{javaUpperCase} Équivalent à java.lang.Character.isUpperCase()
p{javaWhitespace} Équivalent à java.Character.isWhitespace()
p. {javaMirrored} Équivalent à java.lang.Character.isMirrored()
6. Bloc Unicode et classes de catégories
p{InGreek} Bloc grec (bloc simple) Caractères en
p{Lu} Lettres majuscules (simples catégorie)
p{Sc} Symboles monétaires
P{InGreek} Tous les caractères, sauf dans les blocs grecs (niés)
[p{L }&&[^p{Lu}]] Toutes les lettres, sauf les majuscules lettres (moins)
7. Boundary matcher
^ Au début de la ligne, utilisez ^ au début de l'expression régulière. Par exemple : ^ (abc) représente une chaîne commençant par abc. Le paramètre MULTILINE doit être défini lors de la compilation, par exemple Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$ À la fin de l'expression régulière utilisée partout. Par exemple : (^bca).*(abc$) signifie une ligne commençant par bca et se terminant par abc.
b Limite de mot. Par exemple, b(abc) signifie que le début ou la fin du mot contient abc, (abcjj, jjabc peuvent tous correspondre)
B Limite non-mot. Par exemple, B(abc) signifie que le milieu du mot contient abc, (jjabcjj correspond mais jjabc, abcjj ne correspond pas)
A Le début de l'entrée
G La fin de la correspondance précédente (j'ai personnellement je trouve que ce paramètre est inutile). Par exemple, \Gdog signifie rechercher un chien à la fin de la correspondance précédente. S'il n'y a pas de chien, alors recherchez depuis le début. Notez que si le début n'est pas un chien, il ne peut pas correspondre.
Z Fin de la saisie, utilisé uniquement comme terminateur final (le cas échéant)
Le terminateur de ligne est une séquence d'un ou deux caractères qui marque la fin d'une ligne pour une séquence de caractères saisis.
Les codes suivants sont reconnus comme terminateurs de ligne :
-caractère de nouvelle ligne (saut de ligne) ('n'),
- caractère de retour chariot ("rn") suivi d'un caractère de nouvelle ligne,
 un seul retour chariot ('r'),
 caractère de ligne suivante ('u0085'),
 séparateur de ligne ('u2028') ou
‐séparateur de paragraphe ('u2029) .
z Fin de saisie
Lors de la compilation du motif, vous pouvez définir un ou plusieurs drapeaux, par exemple
Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
Le Les six indicateurs suivants sont pris en charge :
-CASE_INSENSITIVE : les caractères correspondants sont indépendants de la casse. Cet indicateur ne prend en compte que les caractères US ASCII par défaut.
‐UNICODE_CASE : lorsqu'il est combiné avec CASE_INSENSITIVE, correspond à l'aide de lettres Unicode.
‐MULTILINE : ^ et $ correspondent au début et à la fin d'une ligne, plutôt qu'à l'intégralité de l'entrée
‐UNIX_LINES : lors de la correspondance de ^ en mode multiligne et $, traitez uniquement 'n' comme un terminateur de ligne
‐DOTALL : lorsque cet indicateur est utilisé, le symbole . correspond à tous les caractères, y compris les terminateurs de ligne
‐CANON_EQ : tenez compte des spécifications de caractères Unicode, etc. Valence
8.Quantificateur gourmand
X ? X, un ou aucun
X* , exactement n fois
X{n,} X, au moins n fois
X{n,m} X, un ou aucun
X* ? X, zéro ou plusieurs fois
X+ ? X, une ou plusieurs
X{n} ,} X, au moins n fois
X{n,m} ? fois
X++ X, une ou plusieurs fois
X{n}+ X, exactement n fois
X{n,}+ Au moins n fois, mais pas plus de m fois
La différence entre gourmand, réticent et possessif est : (notez qu'elle n'est applicable qu'en cas de fuzzing.)
Le quantificateur gourmand est considéré comme "gourmand" car c'est la première fois que vous lisez l'intégralité de la chaîne correspondante floue . Si la première tentative de correspondance (la chaîne entière d'entrée) échoue, le comparateur reculera d'un caractère après le dernier caractère de la chaîne correspondante et réessayera, en répétant ce processus jusqu'à ce qu'une correspondance soit trouvée ou qu'il ne reste plus de caractères jusqu'à ce que vous. peut battre en retraite. Selon le quantificateur utilisé dans l'expression, la dernière chose à laquelle il essaie de correspondre est 1 ou 0 caractères.
Cependant, les quantificateurs réticents adoptent l'approche inverse : ils commencent au début de la chaîne à rechercher, puis lisent progressivement un caractère à la fois pour rechercher une correspondance. La dernière chose qu'ils essaient de faire correspondre est la totalité de la chaîne d'entrée.
Enfin, le quantificateur possessif lit toujours la chaîne d'entrée entière, en essayant une (et une seule) correspondance. Contrairement au quantificateur gourmand, le possessif ne recule jamais.
11. Opérateur logique
XY X suivi de Y
X|Y X ou Y
(X) X comme groupe de capture. Par exemple (abc) signifie capturer abc dans son ensemble
12.Référence arrière
n Tout nième groupe de capture correspondant
groupe de capture peut être numéroté en comptant ses parenthèses ouvertes de gauche à droite. Par exemple, dans l'expression ((A)(B(C))), il existe quatre de ces groupes :
1 ((A)(B(C)))
2 A
3 ( B (C))
4 (C)
Le groupe correspondant peut être référencé par n dans l'expression. Par exemple, (ab)341 signifie ab34ab, (ab)34(cd)12 signifie ab34cdabcd .
13. Citer
Rien, mais citer les caractères suivants
Q Rien, mais citer tous les caractères jusqu'à E. La chaîne entre QE sera utilisée telle quelle (sauf pour les caractères d'échappement dans 1.1). Par exemple, ab\Q{|}\\E
peut correspondre à ab{|}\
E Nothing, mais termine la référence à partir de Q
14. Construction spéciale (sans capture)
. (? :X) X, en tant que groupe non capturant
(?idmsux-idmsux) Rien, mais change l'indicateur correspondant de activé à désactivé. Par exemple : l'expression (?i)abc(?-i)def À ce moment, (?i) active le commutateur insensible à la casse, abc correspond à
la description idmsux est la suivante :
‐i CASE_INSENSITIVE : Jeu de caractères US-ASCII Non sensible à la casse. (?i)
‐d UNIX_LINES : activer les sauts de ligne UNIX
‐m MULTILINE : mode multiligne (?m)
Le comportement de retour à la ligne UNIX est n
Le comportement de retour à la ligne WINDOWS est rn(?s)
‐u UNICODE_CASE : Unicode n'est pas sensible à la casse. (?u)
‐x COMMENTAIRES : Vous pouvez utiliser des commentaires dans le motif, ignorer les espaces dans le motif et "#" jusqu'à la fin (# est suivi de commentaires). (?x) Par exemple (?x)abc#asfsdadsa peut correspondre à la chaîne abc
(?idmsux-idmsux:X) X, en tant que groupe non capturant avec les indicateurs donnés activés - désactivés. Semblable à ce qui précède, l'expression ci-dessus peut être réécrite comme : (?i:abc)def, ou (?i)abc(?-i:def)
(?=X) X, via le positif de largeur nulle anticiper. Une assertion d'anticipation positive de largeur nulle continue de correspondre uniquement si la sous-expression X correspond à la droite de cette position. Par exemple, w+(?=d) signifie une lettre suivie d'un chiffre, mais ne capture pas le nombre (pas de retour en arrière)
(?!X) X, via une anticipation négative de largeur nulle. Assertion d’anticipation négative de largeur nulle. Continuez la correspondance uniquement si la sous-expression X ne correspond pas à droite de cette position. Par exemple, w+(?!d) signifie que les lettres ne sont pas suivies de chiffres et que les chiffres ne sont pas capturés.
(?<=X) X, grâce à un lookbehind positif de largeur nulle. Assertion de publication positive de largeur nulle. La correspondance continue uniquement si la sous-expression X correspond à la gauche de cette position. Par exemple, (?<=19)99 signifie que 99 est précédé du nombre 19, mais que le 19 précédent n'est pas capturé. (Pas de retour en arrière)
(? (?>X) X, en tant que groupe indépendant non capturant (pas de retour en arrière) La différence entre
(?=X) et (?> ) ne revient pas en arrière. Pour Par exemple, lorsque la chaîne correspondante est abcm
, elle peut être mise en correspondance lorsque l'expression est a(?:b|bc), et lorsque l'expression est a(?>b|bc) elle peut également être mise en correspondance



.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn