regex - test - regular expressions
Referencia-¿Qué significa esta expresión regular? (1)
¿Que es esto?
Esta es una colección de Preguntas y Respuestas comunes. Esta es también una Wiki de la comunidad, por lo que todos están invitados a participar en su mantenimiento.
¿Por qué es esto?
regex está sufriendo de give me ze code
tipo de preguntas y respuestas pobres sin explicación. Esta referencia está destinada a proporcionar enlaces a Q & A de calidad.
¿Cuál es el alcance?
Esta referencia está destinada a los siguientes idiomas: php , perl , javascript , python , ruby , java , .net .
Esto podría ser demasiado amplio, pero estos idiomas comparten la misma sintaxis. Para las características específicas, está la etiqueta del lenguaje detrás de ella, por ejemplo:
- ¿Qué son los grupos de equilibrio de expresiones regulares? .net
Preguntas frecuentes sobre las expresiones regulares de desbordamiento de pila
Tutoriales en línea
Cuantificadores
- Cero o más: *:greedy , *?:reluctant *?:reluctant , *+:possessive
- Uno o más: *:greedy , *?:reluctant *?:reluctant , ++:possessive
-
?
: opcional (cero o uno) - Rangos mínimos / máximos (todo incluido):
{n,m}
: entre n & m , {n,}:n-or-more ,{n}
: exactamente n - Diferencias entre codicioso, renuente (también conocido como "perezoso", "desgreñado") y cuantificador posesivo:
- Codiciosos contra reacios versus cuantificadores posesivos
- Discusión en profundidad sobre las diferencias entre codiciosos y no codiciosos
- ¿Cuál es la diferencia entre
{n}
y{n}?
- ¿Alguien me puede explicar los Cuantificadores Positivos? php , perl , java , ruby
- Emulando cuantificadores posesivos .net
- Referencias de desbordamiento no apiladas: de Oracle , regular-expressions.info
Clases de personajes
- ¿Cuál es la diferencia entre corchetes y paréntesis?
-
[...]
: cualquier personaje,[^...]
: negado / cualquier personaje pero -
[^]
coincide con cualquier carácter, incluidas las líneas nuevas javascript -
[/w-[/d]]
/[az-[qz]]
: establecer la resta .net , xml-schema , xpath , JGSoft -
[/w&&[^/d]]
: establece la intersección java , ruby 1.9+ -
[[:alpha:]]
: clases de caracteres POSIX - ¿Por qué
[^//D2]
,[^[^0-9]2]
,[^2[^0-9]]
obtienen resultados diferentes en Java? java - Taquigrafía:
- Dígito: /d:digit , /D:non-digit
- Carácter de Word (letra, dígito, guión bajo):
/w
: carácter de palabra , /D:non-digit - Espacio en /s:whitespace : /s:whitespace , /D:non-digit
- Categorías Unicode (
/p{L}, /P{L}
, etc.)
Secuencias de escape
- Espacios en blanco horizontales: /h:space-or-tab , /t:tab
- Newlines:
-
/r
,/n
: retorno de carro y avance de línea -
/R
: generic newline php
-
- Secuencias de espacios en blanco negadas:
/H
: carácter de espacio en blanco no horizontal,/V
: carácter de espacio en blanco no vertical,/N
: carácter de alimentación en línea no pcre php5 java-8 - Otro:
/v
: pestaña vertical ,/e
: el carácter de escape
Anclajes
-
^
: inicio de línea / entrada ,/b
: límite de palabra, y/B
: límite sin palabra ,$
: final de línea / entrada -
/A
: inicio de la entrada,/Z
: final de la entrada php , perl , ruby -
/z
: el final de la entrada (/Z
en Python) .net , php , pcre , java , ruby , icu , swift , objective-c -
/G
: comienzo del partido php , perl , ruby
(Consulte también "Información específica del sabor → Java → Las funciones en Matcher
")
Grupos
-
(...)
: grupo de captura ,(?:)
: grupo sin captura- ¿Por qué mi grupo de captura repetitiva solo captura el último partido?
-
/1
: Referencia de referencia y grupo de captura,$1
: referencia de grupo de captura- ¿Cuál es el significado de un número después de una barra invertida en una expresión regular?
-
/g<1>123
: ¿Cómo seguir un grupo de captura numerado, como/1
, con un número ?: python
- ¿Qué significa un subpatrón
(?i:regex)
? - ¿Qué significa la ''P'' en
(?P<group_name>regexp)
? -
(?>)
: grupo atómico o grupo independiente ,(?|)
: reinicio de rama- Equivalente a la reinicialización de la rama en .NET / C # .net
- Grupos de captura nombrados:
- Referencia de grupo de captura nombrada general en
regular-expressions.info
- java :
(?<groupname>regex)
: Overview y reglas de denominación (enlaces de desbordamiento no apilados) - Otros idiomas:
(?P<groupname>regex)
python ,(?<groupname>regex)
.net ,(?<groupname>regex)
perl ,(?P<groupname>regex)
y(?<groupname>regex)
php
- Referencia de grupo de captura nombrada general en
Miradas
- Lookaheads: (?=...):positive , (?!...):negative
- Lookbehinds: (?<=...):positive , (?<=...):positive (no soportado por javascript )
- Mire detrás de los límites en:
- Lookbehinds necesita ser de longitud constante php , perl , python , ruby
- Miradas de longitud limitada
{0,n}
java - Se permiten extensiones de longitud variable .net
- Buscar alternativas alternativas:
- Usando
/K
php , perl ( Sabores que soportan/K
) - Módulo regex alternativo para python Python
- La manera hacky
- JavaScript negative lookbehind equivalent Enlaces externos
- Usando
Modificadores
- La mayoría de los sabores: g:global , i:case-insensitive , u:unicode , x:whitespace-extended
-
c
: posición actual perl e:expression php perl o:once ruby - m:multiline php perl python javascript .net java , m:(non)multiline ruby m:(non)multiline
-
s
: línea única (no compatible con javascript o ruby ),s
solución alternativa javascript - S:study php U:ungreedy php U:ungreedy
- Cómo convertir preg_replace e a preg_replace_callback?
- ¿Qué son los modificadores en línea?
- ¿Qué es ''? -mix'' en una expresión regular de Ruby
Otro:
-
|
: operador de alternancia (OR),. : cualquier caracter ,[.]
: personaje de punto literal - ¿Qué personajes especiales deben escapar?
- Verbos de control ( php y perl ):
(*PRUNE)
, (*PRUNE) , (*PRUNE)- solo php :
(*BSR_ANYCRLF)
- solo php :
- Recursividad ( php y perl ):
(?R)
,(?0)
y(?1)
,(?-1)
,(?&groupname)
Tareas comunes
- Obtener una cuerda entre dos llaves:
{...}
- Haga coincidir (o reemplace) un patrón, excepto en las situaciones s1, s2, s3 ...
- ¿Cómo puedo encontrar todos los ID de video de YouTube en una cadena usando una expresión regular?
- Validación:
- Internet: direcciones de correo electrónico , URLs (host / puerto: alternativas regex y non-regex ), passwords
- Numérico: un número , rangos mínimo-máximo (como 1-31) , números de teléfono , date
- Análisis de HTML con expresiones regulares: consulte "Información general> Cuándo no usar Regex"
Regex-Fu avanzado
- Cuerdas y números:
- Expresión regular para que coincida con una línea que no contiene una palabra?
- ¿Cómo detecta este patrón PCRE los palíndromos?
- Cadenas de coincidencia cuya longitud es una cuarta potencia
- ¿Cómo esta expresión regex encuentra números triangulares?
- ¿Cómo determinar si un número es primo con expresiones regulares?
- ¿Cómo hacer coincidir el personaje del medio en una cadena con expresiones regulares?
- Otro:
- ¿Cómo podemos unir ^ nb ^ n con Java regex?
- Match brackets anidados
- (?-1) php , perl
- Usando grupos de equilibrio .net
- Coincidencia de expresiones regulares "verticales" en una "imagen" ASCII
- Lista de preguntas de expresiones regulares altamente votadas en Code Golf
- ¿Cómo hacer que dos cuantificadores repitan la misma cantidad de veces?
- Una expresión regular imposible de combinar:
(?!a)a
- Haga coincidir / eliminar / reemplazar
this
excepto en los contextos A, B y C - Haga coincidir los paréntesis anidados con expresiones regulares sin usar recursividad o grupos de equilibrio?
Información específica del sabor
(Excepto por los marcados con *
, esta sección contiene enlaces de desbordamiento de pila).
- Java
- Documentación oficial: Pattern Javadoc , tutorial de expresiones regulares de Oracle
- Las diferencias entre funciones en
java.util.regex.Matcher
:-
matches()
): la coincidencia debe anclarse a input-start y -end -
find()
): una coincidencia puede estar en cualquier lugar de la cadena de entrada (subcadenas) -
lookingAt()
: la coincidencia debe anclarse a entrada-inicio solo - (Para los anclajes en general, consulte la sección "Anclajes")
-
- Las únicas funciones de
java.lang.String
que aceptan expresiones regulares:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- * Una discusión (obstinada y detallada) sobre las desventajas y las características que faltan en
java.util.regex
- .RED
- ¿Cómo leer una expresión regular .NET con look-ahead, look-behind, grupos de captura y referencias retros mezcladas?
- Documentación oficial:
- Boost Regex Engine: sintaxis general , sintaxis Perl (utilizado por TextPad, Sublime Text, UltraEdit, ... ???)
- Información general de JavaScript 1.5 y objeto RegExp
- .NET MySQL Oracle Perl5 versión 18.2
- PHP: sintaxis de patrones ,
preg_match
- Python: operaciones de expresión regular ,
search
vsmatch
, how-to - Splunk: terminología y sintaxis regex y comando regex
- Tcl: sintaxis regex , página de manpage , comando
regexp
- Visual Studio Buscar y reemplazar
Información general
(Los enlaces marcados con *
no tienen enlaces de desbordamiento de pila).
- Otros recursos de documentación general: Learning Regular Expressions , * Regular-expressions.info , * entrada de Wikipedia , * RexEgg , Open-Directory Project
- DFA versus NFA
- Generando cadenas que coincidan con expresiones regulares
- Libros: Mastering Regular Expressions de Jeffrey Friedl
- Cuándo no usar expresiones regulares:
- Algunas personas, cuando se enfrentan con un problema, piensan "Lo sé, usaré expresiones regulares". Ahora ellos tienen dos problemas. (publicación de blog escrita por el fundador de Home ) *
- No use expresiones regulares para analizar HTML:
- Don''t Por favor, simplemente no lo hagas
- Bueno, tal vez ... si estás realmente decidido (otras respuestas en esta pregunta también son buenas)
Ejemplos de expresiones regulares que pueden provocar que el motor de expresiones regulares falle
Herramientas: probadores y explicadores
(Esta sección contiene enlaces de desbordamiento de pila).
En línea (* incluye probador de reemplazo, + incluye probador de división) :
- Debuggex (también tiene un repositorio de expresiones regulares útiles) javascript , python , pcre
- * Expresiones regulares 101 php , pcre , python , javascript
- Regex Pal , regular-expressions.info javascript
- Rubular RegExr Regex Hero dotnet
- * + regexstorm.net .net
- * RegexPlanet: Java java , Go go go , 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 y POSIX, javascript - Refiddle javascript ruby .net
Desconectado:
- Microsoft Windows: RegexBuddy (análisis), RegexMagic (creación), Expresso (análisis, creación, gratis)