Sono sicuro che questo è banale, ma non riesco a creare un'espressione regolare che tenga conto del fatto che il soggetto è costituito da più righe. Il modificatore "m
" per uno non sembra funzionare.php preg_replace espressione regolare che corrisponde a più righe
risposta
Hai provato il modificatore di s? Significa 'trattare come se una linea singola. 'm' abilita l'uso degli inizi e delle terminazioni di^e $ line da utilizzare.
Ah IC, proverò questo @work domani. Ancora una domanda, come posso abbinare newline, spazi o tabs? Finora ho escogitato "[\\ n \\ t] *", che è corretto? –
Basta usare '\ s', che significa qualsiasi carattere di spazio. –
\ s corrisponde a 'spazio bianco' (che significa \ t e spazio) e credo che possa includere \ n anche quando usato con 's'. – ziya
Maxwell Troy Milton King ha ragione, ma dal momento che la sua risposta è un po 'breve, inserirò anche questo e fornirò alcuni esempi da illustrare.
Innanzitutto, il meta carattere .
per impostazione predefinita NON corrisponde alle interruzioni di riga. Questo è vero per molte implementazioni regex, incluso il sapore di PHP. Detto questo, prendere il testo:
$text = "Line 1\nLine 2\nLine 3";
e la regex
'/.*/'
quindi l'espressione regolare corrisponderà solo Line 1
. Guardate voi stessi:
preg_match('/.*/', $text, $match);
echo $match[0]; // echos: 'Line 1'
dal momento che il .*
"ferma matching" al \n
(nuova linea char). Se si vuole lasciarlo partita Formazione rompe pure, aggiungere il s-modificatore (aka DOT-ALL modificatore) alla fine della vostra regex:
preg_match('/.*/s', $text, $match);
echo $match[0]; // echos: 'Line 1\nLine 2\nLine 3'
Ora circa il m-modificatore (multilinea): ciò consentirà allo ^
di corrispondere non solo all'inizio della stringa di input, ma anche all'inizio di ogni riga. Lo stesso con $
: lascerà che lo $
corrisponda non solo alla fine della stringa di input, ma anche alla fine di ogni riga.
Un esempio:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/', $text, $matches);
print_r($matches);
che corrisponderà solo il 3 (alla fine dell'input). Ma:
ma permettendo al m-modificatore:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/m', $text, $matches);
print_r($matches);
tutte le cifre (singolo) alla fine di ogni riga ('1', '2' e '3') sono abbinati.
+1 fantastica risposta – blak3r
- 1. Espressione regolare Corrisponde a più righe variabili?
- 2. Espressione regolare che corrisponde a un blocco di testo multilinea
- 3. Che cosa corrisponde questa espressione regolare `/^.*$/`?
- 4. stringa non avido espressione regolare che corrisponde
- 5. Regex che corrisponde a qualsiasi espressione regolare valida
- 6. Espressione regolare Java, corrisponde a tutto tranne
- 7. Cosa corrisponde a questa espressione regolare: qr/(?!) /;
- 8. Espressione regolare Javascript che corrisponde a due stringhe
- 9. Espressione regolare che corrisponde a tutto tranne una determinata espressione regolare
- 10. Espressione regolare che corrisponde tra virgolette, contenente citazioni di escape
- 11. espressione regolare Swift: una stringa corrisponde a un modello?
- 12. Inclusione di nuove righe nella funzione preg_replace di PHP
- 13. espressione regolare: corrisponde ad alcuna parola fino a primo spazio
- 14. espressione regolare su più righe con riquadro di testo
- 15. Espressione regolare collegamento automatico
- 16. Espressione regolare - corrisponde a tutte le parole ma corrisponde a parole univoche solo una volta
- 17. Espressione regolare per dividere stringhe lunghe in più righe
- 18. equivalente JavaScript per PHP preg_replace
- 19. PHP preg_replace non avido problemi
- 20. ripetendo più personaggi espressione regolare
- 21. Come modificare il testo che corrisponde a una particolare espressione regolare in Python?
- 22. PHP preg_replace
- 23. Forte password di espressione regolare che corrisponde a qualsiasi carattere speciale
- 24. Quale algoritmo di espressione regolare utilizza PHP?
- 25. Espressione regolare: intervallo numerico
- 26. Espressione regolare PHP - Rimuovi tutti i caratteri non alfanumerici
- 27. Espressione regolare per confrontare gli interi non negativi in PHP?
- 28. Espressione regolare PHP per validazione password sicura
- 29. PHP espressione regolare per abbinare parole
- 30. Espressione regolare a 6 cifre
Sei positivo che la regex sia corretta? – Romain
usa msU per i dettagli leggi un link sotto http://zendf.wordpress.com/2012/02/08/php-preg_match-multi-line-match/ – Tofeeq