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 (/Zen 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
/Kphp , 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 ),ssolució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
thisexcepto 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.Stringque 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 ,
searchvsmatch, 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.comxregexp - * +
regex.larsolavtorvik.comphp PCRE y POSIX, javascript - Refiddle javascript ruby .net
Desconectado:
- Microsoft Windows: RegexBuddy (análisis), RegexMagic (creación), Expresso (análisis, creación, gratis)