Referencia - ¿Qué significa esta expresión regular?
¿Que es esto?
Esta es una colección de preguntas y respuestas comunes. Esto también es un Wiki de la comunidad, por lo que todos están invitados a participar en su mantenimiento.
¿Por qué es esto?
regex está sufriendo de darme el tipo de código ze de preguntas y respuestas deficientes sin explicación. Esta referencia está destinada a proporcionar enlaces a preguntas y respuestas de calidad.
Cual es el alcance?
Esta referencia está destinada a los siguientes lenguajes: php , perl , javascript , python , ruby , java , .net .
Esto puede ser demasiado amplio, pero estos lenguajes comparten la misma sintaxis. Para funciones específicas, está la etiqueta del idioma detrás de ella, ejemplo:
- ¿Qué son los grupos de equilibrio de expresiones regulares? .red
Respuestas
Preguntas frecuentes sobre expresiones regulares de desbordamiento de pila
Vea también muchas sugerencias generales y enlaces útiles en la página de detalles de la etiqueta regex .
Tutoriales online
Cuantificadores
- Cero o más: *: codicioso ,*?: reacios ,*+: posesivo
- Uno-o-más: +: codicioso ,+?: reacios ,++: posesivo
- ?: opcional (cero o uno)
- / Rangos MAX MIN (todo incluido): {n,m}: entre n y m ,{n,}n-o-más ,{n}: exactamente n
- Diferencias entre cuantificador codicioso, reacio (también conocido como "perezoso", "desaforado") y posesivo:
- Cuantificadores codiciosos versus reacios versus posesivos
- Discusión en profundidad sobre las diferencias entre codiciosos y no codiciosos
- ¿Cuál es la diferencia entre {n}y{n}?
- ¿Alguien puede explicarme los cuantificadores posesivos? php , perl , java , ruby
- Emulando cuantificadores posesivos .net
- Referencias que no son de desbordamiento de pila: de Oracle , regular-expressions.info
 
Clases de personajes
- ¿Cuál es la diferencia entre corchetes y paréntesis?
- [...]: cualquier carácter- [^...],: negado / cualquier carácter excepto
- [^]coincide con cualquier carácter, incluidas las nuevas líneas javascript
- [\w-[\d]]/- [a-z-[qz]]: establecer resta .net , xml-schema , xpath , JGSoft
- [\w&&[^\d]]: establecer intersección java , ruby 1.9+
- [[:alpha:]]: Clases de caracteres POSIX
- ¿Por qué [^\\D2],[^[^0-9]2],[^2[^0-9]]obtener resultados diferentes en Java? Java
- Taquigrafía:
- Dígitos: \d: dígitos ,\D: no sea un dígito
- Palabra carácter (letra, número, un guión): \w: carácter de palabra ,\W: el carácter no-palabra
- Los espacios en blanco: \s: espacio en blanco ,\S: no está en blanco
 
- Dígitos: 
- Categorías Unicode ( \p{L}, \P{L}, etc.)
Secuencias de escape
- Espacio en blanco horizontal: \hEspacio-o-tab ,\t: pestaña
- Nuevas líneas:
- Secuencias de espacios en blanco negadas:: carácter de espacio en blanco \Hno horizontal,: carácter de espacio en blanco\Vno vertical,: carácter\Nde alimentación de línea no pcre php5 java-8
- Otros: \v: tabulación vertical ,\e: el carácter de escape
Anclas
- ^: inicio de la línea / entrada ,- \b: límite de la palabra, y- \B: límite de palabra ,- $: final de línea / entrada
- \A: inicio de entrada- \Z,: fin de entrada php , perl , ruby
- \z: el final de la entrada (- \Zen Python) .net , php , pcre , java , ruby , icu , swift , objetivo-c
- \G: inicio de partido php , perl , ruby
(Consulte también "Información específica de sabor → Java → Las funciones en Matcher")
Grupos
- (...): grupo de captura ,- (?:): grupo sin captura
- \1: referencia inversa y referencia de grupo de captura,: referencia de- $1grupo de captura
- ¿Qué significa un subpatrón (?i:regex)?
- ¿Qué significa la 'P' en (?P<group_name>regexp)?
- (?>): grupo atómico o grupo independiente ,- (?|): reinicio rama
- Grupos de captura con nombre:
- Referencia de grupo de captura con nombre general en regular-expressions.info
- java : (?<groupname>regex): Información general y reglas de nomenclatura (enlaces no desbordamiento de pila)
- Otros idiomas: Python , .NET , Perl , y php(?P<groupname>regex)(?<groupname>regex)(?<groupname>regex)(?P<groupname>regex)(?<groupname>regex)
 
- Referencia de grupo de captura con nombre general en 
Lookarounds
- Los símbolos de anticipación: (?=...): positivo ,(?!...): negativo
- Lookbehinds: (?<=...): positivo ,(?<!...): negativo (no soportado por javascript )
- Mirar más allá de los límites en:
- Alternativas retrospectivas:
Modificadores
- La mayoría de los sabores: g: global ,i: entre mayúsculas y minúsculas ,u: Unicode ,x: espacio en blanco extendido
- c: posición actual perl  - e: expresión php perl  - o: once ruby
- m: multilínea php perl pitón javascript .NET java ,- m: (no) de varias líneas rubí
- s: línea única (no compatible con javascript o ruby ),- ssolución alternativa de javascript
- S: estudiar php  - U: php r poco codicioso
- ¿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:
- |: alternancia (OR) operador ,- .: cualquier carácter ,- [.]: carácter de punto literal
- ¿Qué caracteres especiales se deben escapar?
- Verbos de control ( PHP y Perl ): (*PRUNE),(*SKIP),(*FAIL)y(*F)- php solamente:(*BSR_ANYCRLF)
 
- php solamente:
- Recursividad ( PHP y Perl ): (?R),(?0)y(?1),(?-1),(?&groupname)
Tareas comunes
- Consigue una cuerda entre dos llaves: {...}
- Coincidir (o reemplazar) un patrón excepto en las situaciones s1, s2, s3 ...
- ¿Cómo encuentro todos los identificadores de video de YouTube en una cadena usando una expresión regular?
- Validación:
- Internet: direcciones de correo electrónico , URL (host / puerto: alternativas regex y no regex ), contraseñas
- Numérico: un número , rangos mínimo-máximo (como 1-31) , números de teléfono , fecha
- Análisis de HTML con expresiones regulares: consulte "Información general> Cuándo no usar expresiones regulares"
 
Regex-Fu avanzado
- Cadenas y números:
- Expresión regular para coincidir con una línea que no contiene una palabra
- ¿Cómo detecta este patrón de PCRE los palíndromos?
- Coincidir con cadenas cuya longitud es una cuarta potencia
- ¿Cómo encuentra esta expresión regular números triangulares?
- ¿Cómo determinar si un número es primo con expresión regular?
- ¿Cómo hacer coincidir el carácter del medio en una cadena con expresiones regulares?
 
- Otro:
- ¿Cómo podemos hacer coincidir un ^ nb ^ n con Java regex?
- Coincidir con corchetes anidados
- 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 se repitan la misma cantidad de veces?
- Una expresión regular imposible de igualar: (?!a)a
- Emparejar / eliminar / reemplazar thisexcepto en los contextos A, B y C
- ¿Coincidir corchetes anidados con expresiones regulares sin usar recursividad o grupos de equilibrio?
 
Información específica de sabor
(A excepción de los marcados con *, esta sección contiene enlaces que no son de Stack Overflow).
- 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 estar anclada tanto en input-start como -end
- find()): Una coincidencia puede estar en cualquier lugar de la cadena de entrada (subcadenas)
- lookingAt(): La coincidencia debe estar anclada solo al inicio de entrada
- (Para anclajes en general, consulte la sección "Anclajes")
 
- Las únicas java.lang.Stringfunciones que aceptan expresiones regulares:matches(s),replaceAll(s,s),replaceFirst(s,s),split(s),split(s,i)
- * Una discusión (obstinada y) detallada de las desventajas y características faltantes enjava.util.regex
 
- .RED
- Documentación oficial:
- Impulsar el motor de expresiones regulares: sintaxis general , sintaxis de Perl (utilizado por TextPad, Sublime Text, UltraEdit, ... ???)
- Información general de JavaScript 1.5 y objeto RegExp
- .NET  
                MySQL Oracle Oracle Perl5 versión 18.2 Perl5 versión 18.2  
- PHP: sintaxis de patrones ,preg_match
- Python: operaciones de expresiones regulares , searchvsmatch, procedimientos
- Splunk: terminología y sintaxis de expresiones regulares y comando de expresiones regulares
- Tcl: sintaxis de expresiones regulares , página de manual , regexpcomando
- Buscar y reemplazar de Visual Studio
 
Información general
(Los enlaces marcados con *son enlaces que no son de Stack Overflow).
- Otros recursos de documentación general: Aprendizaje de expresiones regulares , * Regular-expressions.info , * Entrada de Wikipedia , * RexEgg , Open-Directory Project
- DFA frente a NFA
- Generación de cadenas regex coincidentes
- Libros: Dominando las expresiones regulares de Jeffrey Friedl
- Cuándo no usar expresiones regulares:
- Algunas personas, cuando se enfrentan a un problema, piensan "Lo sé, usaré expresiones regulares". Ahora ellos tienen dos problemas. (publicación de blog escrita porel fundador de Stack Overflow ) *
- No use expresiones regulares para analizar HTML:
- No lo hagas . 
                Por favor, no lo hagas  
- Bueno, tal vez ... si está realmente decidido (otras respuestas en esta pregunta también son buenas)
 
- No lo hagas . 
                
 
Ejemplos de expresiones regulares que pueden hacer que el motor de expresiones regulares falle
Herramientas: probadores y explicadores
(Esta sección contiene enlaces que no son de Stack Overflow).
- En línea (* incluye probador de reemplazo, + incluye probador dividido) : - Debuggex (también tiene un repositorio de expresiones regulares útiles) javascript , python , pcre
- * Expresiones regulares 101 php , pcre , python , javascript
- Expresiones regulares Pal , regular-expressions.info Javascript
- Rubular  rubí  
                RegExr Regex héroe dotnet Regex héroe dotnet  
- * + regexstorm.net .net
- * RegexPlanet: Java java , Go go , Haskell haskell , JavaScript javascript , .NET dotnet , Perl perl php PCRE php , Python python , Ruby ruby , XRegExp xregexp
- freeformatter.comxregexp
- * + php PCRE y POSIX, javascriptregex.larsolavtorvik.com
- Refiddle javascript ruby .net
 
- Desconectado: - Microsoft Windows: RegexBuddy (análisis), RegexMagic (creación), Expresso (análisis, creación, gratis)