Estoy seguro de que esto es trivial, pero no puedo crear una expresión regular que tenga en cuenta que el tema consta de varias líneas. El modificador "m
" para uno no parece funcionar.php preg_replace regex que coincide con varias líneas
Respuesta
¿Has probado el modificador 's'? Significado 'tratar como si fuera una sola línea. 'm' permite usar comienzos y finales de^y $ line.
Ah IC, intentaremos @work mañana. Una pregunta más, ¿cómo puedo unir líneas nuevas, espacios o pestañas? Hasta ahora he llegado a "[\\ n \\ t] *", ¿eso es correcto? –
Simplemente use '\ s', lo que significa cualquier caracter de espacio. –
\ s coincide con 'espacio en blanco' (es decir, \ t y espacio) y creo que puede incluir \ n también cuando se usa con 's'. – ziya
Maxwell Troy Milton King tiene razón, pero dado que su respuesta es un poco corta, la publicaré también y proporcionaré algunos ejemplos para ilustrar.
En primer lugar, el carácter meta .
de forma predeterminada NO coincide con los saltos de línea. Esto es cierto para muchas implementaciones de expresiones regulares, incluido el sabor de PHP. Dicho esto, toma el texto:
$text = "Line 1\nLine 2\nLine 3";
y la expresión regular
'/.*/'
entonces la expresión regular sólo igualará Line 1
. Ver por sí mismo:
preg_match('/.*/', $text, $match);
echo $match[0]; // echos: 'Line 1'
ya que el .*
"deje de juego" en el \n
(Nuevo car línea). Si quieres dejar que coincida con saltos de línea, así, añadir el s-modificador (también conocido como DOT-ALL modificador) al final de su expresión regular:
preg_match('/.*/s', $text, $match);
echo $match[0]; // echos: 'Line 1\nLine 2\nLine 3'
Ahora sobre el m-modificador (varias líneas): eso permitirá que el ^
coincida no solo con el inicio de la cadena de entrada, sino también con el inicio de cada línea. Lo mismo con $
: permitirá que el $
coincida no solo con el final de la cadena de entrada, sino también con el final de cada línea.
Un ejemplo:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/', $text, $matches);
print_r($matches);
que coincidirá con sólo el 3 (al final de la entrada). Pero:
pero permitiendo que el m-modificador:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/m', $text, $matches);
print_r($matches);
todos (solo) dígitos al final de cada línea ('1', '2' y '3') están emparejados.
+1 respuesta fantástica – blak3r
- 1. Incluyendo nuevas líneas en la función PHP preg_replace
- 2. ¿Cómo funciona PowerShell regex con cadenas de varias líneas?
- 3. Regex que coincide con el número con hasta 2 decimales
- 4. PHP preg_replace
- 5. PHP preg_replace \
- 6. cadena de php que coincide con comodín *?
- 7. Regex: coincide con toda la cadena a menos que
- 8. ¿Patrón Regex que no coincide con ciertas extensiones?
- 9. regex - coincide con el carácter que no se escapó
- 10. python regex para que coincida con la macro del preprocesador de varias líneas
- 11. Java Regex no coincide?
- 12. Regex - coincide con todo, pero barra inclinada
- 13. Regex: ¿coincide con todas las apariciones?
- 14. regex coincide con la intersección en C#
- 15. Filtro PHP con preg_replace solo permite letras
- 16. php regex o | operador
- 17. Expresión regular ¿Coincide con líneas múltiples variables?
- 18. comando de bash que abarca varias líneas con varias líneas de comentarios en el medio
- 19. Centro alineando varias líneas de texto con GD y PHP
- 20. reemplazar la coma (,) con Dot php RegEx
- 21. RegEx en texto sublime: ¿Coincide con cualquier carácter, incluidas las líneas nuevas?
- 22. coincide con el mismo carácter desconocido varias veces
- 23. Regex: eliminar líneas que no comienzan con un dígito
- 24. JavaScript equivalente de preg_replace PHP
- 25. JavaScript equivalente para PHP preg_replace
- 26. PHP preg_replace/preg_match vs PHP str_replace
- 27. Coincide con el identificador Unicode de C# con Regex
- 28. RegEx - codicioso espacio en blanco coincide
- 29. AES en JavaScript que coincide con la mcrypt de PHP
- 30. encuentran varias líneas en Notepad ++
¿Está seguro de que la expresión regular es la correcta? – Romain
use msU para obtener más información lea un enlace a continuación http://zendf.wordpress.com/2012/02/08/php-preg_match-multi-line-match/ – Tofeeq