Cosa si intende per [\ s \ S] * in regex in PHP? [\S\s]*
corrisponde effettivamente a ogni stringa uguale a .*
?Cosa significa [ S s] * nella regex in PHP?
risposta
Per impostazione predefinita, .
non corrisponde a nuove righe - [\s\S]
è un trucco su questo problema.
Questo è comune in JavaScript, ma in PHP è possibile utilizzare il flag /s
per far corrispondere il punto a tutti i caratteri.
Il meta carattere .
corrisponde a qualsiasi carattere tranne una nuova riga. Quindi il pattern .*
che viene utilizzato per abbinare qualsiasi cosa non funzionerà se devi uguagliare le newline.
preg_match('/^.*$/',"hello\nworld"); // returns 0
[\s\S]
che è una classe di caratteri di caratteri di spaziatura e caratteri non di spaziatura corrisponde qualsiasi carattere incluso il fine riga in modo da fare [\d\D]
, [\w\W]
. Quindi il tuo pattern [\s\S]*
ora corrisponde a qualsiasi cosa.
preg_match('/^[\s\S]$/s',"hello\nworld"); // returns 1
Un'alternativa per fare .
partita nulla (tra cui una nuova riga) è quello di utilizzare un modificatore s
.
preg_match('/^.*$/s',"hello\nworld"); // returns 1
modo alternativo di utilizzare il modificatore s
è in-rivestimento come:
preg_match('/^(?s).*(?-s)$/',"hello\nworld"); // returns 1
(?s)
accende la modalità s
e (?-s)
giri se spento. Una volta disattivato, qualsiasi successivo .
non corrisponderà a una nuova riga.
L'ultimo bit modifica solo il comportamento del adiacente '.'? Non ho visto prima quella sintassi. – BoltClock
@BoltClock - è possibile impostare o deselezionare i flag in linea - funziona per tutti i punti finché non lo si deseleziona: '(? Smi). * Abc (? - smi). * ABc' – Kobi
@Kobi: Ah, è davvero fantastico! – BoltClock
[\s\S]
Un set di caratteri che corrisponde a qualsiasi carattere incluse le interruzioni di riga.
.
Corrisponde a qualsiasi carattere tranne interruzioni di riga.
- 1. Cosa significa "s" nella struttura?
- 2. Regex PHP: Differenza tra \ s e \\ s
- 3. Cosa significa "%. * S" in printf?
- 4. Cosa significa s/\ G/0/g?
- 5. espressioni Regex in Java \\ s vs. \\ s +
- 6. Che cosa significa% S in PHP, HTML o XML?
- 7. Che cosa significa% s in Python?
- 8. Cosa significa dove S: nuovo() in C#
- 9. Cosa significa questo codice (s, e)?
- 10. Significato di (? S) in regex
- 11. Comprendere l'espressione regolare [\ s \ S - [<>]] *
- 12. Che cosa significa l'identificatore di formato di% * s?
- 13. Che cosa fa l'espressione regolare \\ s *, \\ s * fa?
- 14. Che cosa significa questo combinatore do: s (sk)
- 15. Diversi `with`s in` try`s
- 16. In Perl, qual è la differenza tra s/^ \ s + // e s/\ s + $ //?
- 17. Python equivalente a "php -s"
- 18. Cosa fa 's' in modalità visiva?
- 19. Cosa fa il predicato s() in Prolog?
- 20. Cosa significano "% s", "% d" ecc. Nella programmazione Delphi?
- 21. rotaie s o rotaie exec fascio s
- 22. string s; &s+1; Legale? UB?
- 23. Cosa significa "EGPCS" in PHP?
- 24. Cosa significa (^?) * In questa regex?
- 25. In S s = S() è garantito che non verrà creato alcun temporaneo?
- 26. Combinatore S in Erlang
- 27. Come calcolo MB/s & MiB/s?
- 28. decimale (s, p) o numero (s, p)?
- 29. Regex: cosa significa (?! ...)?
- 30. Postgees regex: il comportamento di \ s e \ S e la classe di caratteri sembra errata
C'è sempre il modificatore 's' ... – BoltClock
Quando compare' .' corrisponde a una nuova riga? – yoyo
@BoltClock - Grazie, stavo proprio per arrivarci, dovevo solo confermare come è fatto in PHP. – Kobi