¿Cómo hago una expresión para que coincida absolutamente con todo (incluidos los espacios en blanco)?
Ejemplo:
Regex: compré _____ ovejas.
Partidos: compré ovejas. Compré una oveja. Compré cinco ovejas.
Intenté usarlo (.*)
, pero eso no parece estar funcionando.
Actualización: Lo puse a trabajar, aparentemente el problema no era con las expresiones regulares, es solo que los caracteres (.) Se estaban escapando.
.*
Deberia trabajar. ¿Puedes pegar tu código real?Respuestas:
Normalmente, el punto coincide con cualquier carácter, excepto las líneas nuevas .
Entonces, si
.*
no funciona, establezca la opción "punto coincide con las nuevas líneas también" (o use(?s).*
).Si está utilizando JavaScript, que no tiene una opción "dotall", intente
[\s\S]*
. Esto significa "hacer coincidir cualquier número de caracteres que son espacios en blanco o no espacios en blanco" - efectivamente "coincide con cualquier cadena".Otra opción que solo funciona para JavaScript (y no es reconocida por ningún otro sabor de expresión regular) es la
[^]*
que también coincide con cualquier cadena. Pero[\s\S]*
parece ser más utilizado, tal vez porque es más portátil.fuente
.*
no coincide\n
pero combina una cadena que contiene solo\n
porque coincide con 0 caracteres.(?s).*
obras para mí coincidieron con todo, incluida la nueva línea*
(como en/.*(?:)/
) o usando el constructor de expresiones regulares (var foo = new RegExp(".*")
).(.*?)
coincide con cualquier cosa, lo he estado usando durante años.fuente
("title":".*?")
[\s\S]*
o[^]*
.w+
no es suficiente, termino usando.+
. Afortunadamente no ha vuelto a morderme todavía.Elija y memorice 1 de los siguientes !!! :)
Explicación:
\s
: espacio en blanco\S
: no espacio en blanco\w
: palabra\W
: no palabra\d
: dígito\D
: no dígito(Puede intercambiar
*
por+
si desea 1 o MÁS caracteres [en lugar de 0 o más]).EDICIÓN DE BONIFICACIÓN:
Si desea hacer coincidir todo en una sola línea, puede usar esto:
Explicación:
^
: no\n
: salto de línea+
: para 1 personaje o másfuente
Prueba esto:
o incluso
fuente
Use
.*
y asegúrese de que está utilizando el equivalente de sus implementaciones de una sola línea para que coincida con las terminaciones de línea .Aquí hay una gran explicación -> http://www.regular-expressions.info/dot.html
fuente
Porque
.
Encuentra un solo carácter, excepto nueva línea o terminador de línea.Entonces, para que coincida con cualquier cosa, puede usar así:
(.|\n)*?
¡Espero eso ayude!
fuente
(.*?)
no funciona para mi Estoy tratando de hacer coincidir los comentarios rodeados/* */
, que pueden contener varias líneas.Prueba esto:
Esta expresión regular coincide con
a
oanything else expect a
. Absolutamente, significa hacer coincidir todo.Por cierto, en mi situación,
/\*([a]|[^a])*/
coincide con los comentarios de estilo C.Gracias @mpen por una manera más concisa.
fuente
[\s\S]
, es decir, espacios de coincidencia y no espacios.Para JavaScript, la respuesta mejor y más simple parece ser /.*/.
Según lo sugerido por otros /(.*?)/ funcionaría bien pero /.*/ es más simple. Los () dentro del patrón no son necesarios, por lo que puedo ver ni el final. para que coincida absolutamente con cualquier cosa (incluidas las cadenas vacías)
NO SOLUCIONES:
/ [\ s \ S] / NO coincide con cadenas vacías, por lo que no es la solución.
/ [\ s \ S] * / CONcuerda también con cadenas vacías. Pero tiene un problema: si lo usa en su código, entonces no puede comentar dicho código porque el '* /' se interpreta como el final del comentario.
/ ([\ s \ S] *) / funciona y no tiene el problema de comentario. Pero es más largo y más complicado de entender que /.*/.
fuente
Si está utilizando JavaScript, ES2018 agregó el indicador s (dotAll). Con la
s
bandera, el punto.
coincidirá con cualquier carácter que incluya nuevas líneas.Nota : Todavía no es compatible con algunos navegadores.
fuente
La especificación 2018 proporciona la bandera s (alias: dotAll), de modo que
.
coincida con cualquier carácter, incluidos los saltos de línea:El código anterior funciona en Chrome, pero la
s
bandera aún no está implementada en Firefox, pero lo estará pronto .fuente
http://sandbox.phpcode.eu/g/b2243.php
fuente
Recomiendo usar
/(?=.*...)/g
Ejemplo
Usa regex101 para probar
fuente
Honestamente, muchas de las respuestas son antiguas, por lo que descubrí que si simplemente prueba cualquier cadena independientemente del contenido del carácter con "/.*/i", obtendrá TODO lo suficiente.
fuente