Référence - que signifie ce regex?
Qu'est-ce que c'est?
c'est une collection de questions et réponses communes.C'est aussi un Wiki communautaire, donc tout le monde est invité à participer à son maintien.
pourquoi?
regex souffre de give me ze code
type de questions et de mauvaise réponses, sans explication. Cette référence est destinée à fournir des liens vers des questions et réponses de qualité.
Quelle est la portée?
Cette référence est destinée aux langues suivantes: php , perl , javascript , python , ruby , java , .net .
cela pourrait être trop large, mais ces langues partagent la même syntaxe. Pour les fonctionnalités spécifiques, il y a la balise du langage derrière, exemple:
- Quels sont l'expression régulière de l'Équilibrage de Groupes? .net
1 réponses
Le Débordement de la Pile d'Expressions Régulières FAQ
tutoriels en ligne
Quantificateurs
- zéro ou plus:
*
:gourmand ,*?
:réticents ,*+
:possessif - l'Un-ou-plus:
+
:gourmand ,+?
:réticents ,++
:possessif -
?
:facultatif (zéro ou un) - min/max range (all inclus):
{n,m}
: entre n & m ,{n,}
:n-ou-plus ,{n}
:exactement n - Differences between greedy, reluctant (a. K. A. "lazy", "ungreedy") et quantificateur possessif:
- Gourmand vs Réticents vs Possessif Quantificateurs
- discussion approfondie sur les différences entre gourmands et non gourmands
- Quelle est la différence entre
{n}
et{n}?
- Quelqu'un peut-il m'expliquer les quantificateurs possessifs? php , perl , java , ruby "
- émulation possessive les quantificateurs .net
- Non-Débordement de Pile références: Oracle , regular-expressions.info
Classes De Caractères
- Quelle est la différence entre les crochets et les parenthèses?
-
[...]
: n'importe quel personnage,[^...]
: nié/tout caractère mais -
[^]
correspond à l'un quelconque des caractères incluant newlines javascript -
[\w-[\d]]
/[a-z-[qz]]
: définir soustraction .net , xml-schema , xpath , JGSoft -
[\w&&[^\d]]
: ensemble d'intersection java , ruby 1.9+ -
[[:alpha:]]
:classes de caractères POSIX - pourquoi
[^\D2]
,[^[^0-9]2]
,[^2[^0-9]]
obtenir des résultats différents en Java? java - Shorthand:
- chiffre:
\d
: chiffre ,\D
:non numérique - le Mot caractère (Lettre, chiffre, caractère de soulignement):
\w
:caractère de mot ,\W
:non le mot caractère - espace blanc:
\s
: whitespace ,\S
:non-espaces
- chiffre:
- catégories Unicode (
\p{L}, \P{L}
, etc.)
Séquences D'Échappement
- blanc Horizontal:
\h
:de l'espace ou tabulation ,\t
:onglet - les retours à la ligne:
- Nié les espaces séquences:
\H
:Non horizontale caractère d'espacement,\V
:Non blanc vertical,\N
: caractère d'alimentation Non linéaire pcre php5 java-8 - autres:
\v
: étiquette verticale ,\e
:le caractère d'évasion
ancres
-
^
:début du ligne / entrée ,\b
:limite des mots, et\B
: limite des non-mots ,$
:fin de ligne / entrée -
\A
:début de l'entrée,\Z
: fin de l'entrée php , perl , ruby -
\z
:la fin de l'input (\Z
en Python) .net , php , pcre , java , ruby , icu , SWIFT , objectif-c -
\G
:début du match php , perl , ruby
(Voir aussi " Flavor-Specific Information → Java → les fonctions Matcher
")
Groupes
-
(...)
:groupe de capture ,(?:)
:groupe de non-capture -
:la référence arrière et de capture-groupe de référence,
:la capture d'un groupe de référence
- que signifie un sous-chat
(?i:regex)
? - que signifie Le " P "dans
(?P<group_name>regexp)
? -
(?>)
:groupe atomique ou groupe indépendant ,(?|)
:Direction générale réinitialiser - groupes de capture nommés:
- nom général du groupe de capture référence à
regular-expressions.info
- java :
(?<groupname>regex)
: vue d'ensemble et les règles de nommage (Non-Débordement de Pile liens) - d'Autres langues:
(?P<groupname>regex)
python ,(?<groupname>regex)
.net ,(?<groupname>regex)
perl ,(?P<groupname>regex)
et(?<groupname>regex)
php
- nom général du groupe de capture référence à
Lookarounds
- Lookheads:
(?=...)
: positif ,(?!...)
:négatif - Lookbehinds:
(?<=...)
: positif ,(?<!...)
:négatif (non supporté par javascript ) - Lookbehind limits dans:
- Lookbehind alternatives:
modificateurs
- la plupart des saveurs:
g
: global ,i
:insensible à la casse ,u
:unicode ,x
:espace-étendue -
c
:position actuelle perle
:l'expression php perlo
: une fois ruby -
m
:multiligne php perl python javascript .net java ,m
:(Non) multiligne ruby -
s
:ligne simple (non supportée par javascript ou ruby ),s
solution de contournement javascript -
S
:l'étude phpU
:moins gourmand php r - comment convertir preg_replace e en preg_replace_callback?
- Qu'est-ce que les modificateurs inline?
- Qu'est-ce que"?-mélanger dans un Ruby Expression Régulière
autres:
-
|
: alternation (OR) operator ,.
:n'importe quel personnage ,[.]
:caractère point littéral - quels caractères spéciaux doivent être échappés?
- verbes de contrôle ( php et perl ):
(*PRUNE)
,(*SKIP)
,(*FAIL)
et(*F)
- php seulement:
(*BSR_ANYCRLF)
- php seulement:
- récursion ( php et perl ):
(?R)
,(?0)
et(?1)
,(?-1)
,(?&groupname)
- Validation:
, Url (hôte/port: regex et non-regex solutions de rechange"), mots de passe- Internet: "15197310920 adresses e-mail"
- Validation:
- Numérique: un certain nombre , min-max gammes (comme 1-31) , numéros de téléphone , date
- Parsing HTML avec la regex: Voir "Informations Générales > Quand ne pas utiliser l'expression rationnelle"
Advanced Regex-Fu
- chaînes et numéros:
- Expression régulière pour correspondre à une ligne qui ne contient pas de mot?
- comment ce modèle PCRE détecte-t-il les palindromes?
- Match chaînes de caractères dont la longueur est un quatrième pouvoir
- comment ce regex trouve-t-il les nombres triangulaires?
- Comment déterminer si un nombre est une prime avec regex?
- Comment faire correspondre le caractère du milieu dans un une corde avec du regex?
- autres:
- Comment Pouvons-nous faire correspondre a^n b^n avec Java regex?
- correspond entre parenthèses
- "Verticale" de l'expression rationnelle correspondant dans la table ASCII "image"
- Liste de très haut voté regex questions sur le Code de Golf
- Comment faire pour que deux quantificateurs répètent le même nombre de fois?
- impossible de correspondance d'expression régulière:
(?!a)a
- Match/supprimer/remplacer
this
sauf dans des contextes A, B et C - faire correspondre les crochets imbriqués avec regex sans utiliser de groupes de récursion ou d'équilibrage?
Information Spécifique À La Saveur
(à l'exception de ceux marquée de *
, cette section contient des liens Non-Stack Overflow.)
- Java
- documentation officielle: Pattern Javadoc , tutoriel D'expressions régulières D'Oracle
- les différences entre les fonctions dans
java.util.regex.Matcher
:-
matches()
): la correspondance doit être ancrée à la fois input-start et input-end -
find()
): Un match peut être n'importe où dans la chaîne d'entrée (sous-chaînes) -
lookingAt()
: Le match doit être ancré à l'entrée-début seulement - (pour les ancres en général, voir la section "ancres")
-
- les seules fonctions
java.lang.String
qui acceptent les expressions régulières:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- * (opiniâtre et) discussion détaillée des inconvénients de et les fonctionnalités manquantes dans
java.util.regex
- .NET
- documentation officielle:
- Boost moteur d'expressions régulières: syntaxe Générale , syntaxe de Perl (utilisé par TextPad, Sublime Text, UltraEdit,...???)
- JavaScript 1.5 infos générales et objet RegExp
- .NET MySQL Oracle Perl5 version 18.2
- PHP: ,
preg_match
- Python: opérations D'expression régulière ,
search
smatch
, how-to - Splunk: terminologie et syntaxe regex et commande regex
- Tcl: syntaxe regex , page de manuel ,
regexp
la commande - Visual Studio trouver et remplacer
Informations générales
(les liens marqués avec *
sont des liens de débordement autres que des piles.)
- Autres ressources de documentation: l'Apprentissage des Expressions Régulières , * Regular-expressions.info , * entrée de Wikipedia , * RexEgg , Open Directory Project
- DFA rapport de la NFA
- Génération de Chaînes de caractères qui correspondent regex
- Books: Jeffrey Friedl's Mastering Regular Expressions
- Quand pas utiliser des expressions régulières:
- certaines personnes, lorsqu'elles sont confrontées à un problème, pensent "je sais, je vais utiliser des expressions régulières."Maintenant, ils ont deux problèmes. (billet de blog écrit par Stack Overflow 's fondateur)*
- N'utilisez pas regex pour analyser HTML:
- Ne pas . s'il vous Plaît, il suffit de ne pas
- peut-être...si vous êtes vraiment déterminé (d'autres réponses à cette question sont aussi bon)
exemples de regex qui peuvent causer la défaillance du moteur de regex
Outils: les Testeurs et Explainers
(cette section contient des liens Non-Stack Overflow.)
-
en ligne (*y compris un appareil d'essai de remplacement, + y compris un appareil d'essai fractionné) :
- Debuggex (a également un dépôt de regexes utiles) javascript , python , pcre "
- * Expressions Régulières 101 php , pcre , python , javascript
- Regex Pal , regular-expressions.info javascript
- Rubular ruby RegExr Regex Hero dotnet
- * + regexstorm.net .net
- *RegexPlanet: Java java , Go aller , Haskell haskell , JavaScript javascript , .NET dotnet , Perl perl PHP pcre PHP , Python Python , Ruby ruby , XRegExp xregexp
-
freeformatter.com
xregexp - *+
regex.larsolavtorvik.com
php PCRE et POSIX, javascript - Refiddle javascript ruby .net
-
Hors ligne:
- Microsoft Windows: RegexBuddy (analyse), RegexMagic (création), Expresso (analyse, création, libre)