Ce face \s și \S (spații albe)
Clasa \s (de la whitespace) potrivește orice caracter de spațiere albă: spațiul obișnuit ( ), tabulatorul orizontal (\t), trecerea pe linie nouă (\n), returul de car (\r), form feed (\f) și vertical tab (\v).
Opusul său, \S (non-whitespace), potrivește orice caracter care nu este spațiu alb (litere, cifre, punctuație). Combinația \s+ este extrem de utilă pentru normalizarea spațiilor multiple dintr-un text, iar \S+ este cea mai rapidă metodă de a extrage „cuvinte” separate prin spații (indiferent ce simboluri sau diacritice conțin).
Variante și sintaxă asociată
| Expresie / Simbol | Descriere |
|---|---|
\s |
Un singur caracter de spațiu alb: [ \t\r\n\f\v]. |
\S |
Orice caracter vizibil (non-whitespace): [^ \t\r\n\f\v]. |
\s+ |
Unul sau mai multe spații, tab-uri sau linii noi consecutive. |
\S+ |
Un grup continuu de caractere fără spații (ex. un token sau un URL dintr-un text). |
^\s+|\s+$ |
Spațiile de la începutul sau sfârșitul unui șir (implementarea clasică pentru trim). |
[\s\S]* |
Absolut orice caracter, inclusiv linii noi (alternativă clasică la .* cu flag-ul s). |
Exemple
Exemplul 1: Înlocuirea spațiilor duble și a tab-urilor cu un singur spațiu
Expresia \s+ comprimă secvențele de spații, tab-uri și newline-uri într-un singur spațiu.
// PHP:
$text = "Acesta este\tun text\ncu spații neregulate.";
$curat = preg_replace('/\s+/', ' ', trim($text));
Potriviri găsite (Matches)
"Acesta este un text cu spații neregulate."
Exemplul 2: Împărțirea unui text în token-uri vizibile cu \S+
Spre deosebire de \w+, \S+ păstrează laolaltă diacriticele, cratimele și punctuația lipită de cuvânt.
Expresie: /\S+/g
Text: "Bună, lume! Preț: 49,99 lei."
Potriviri găsite (Matches)
Match 1: "Bună,"
Match 2: "lume!"
Match 3: "Preț:"
Match 4: "49,99"
Match 5: "lei."
Greșeli frecvente
- Folosirea lui
\satunci când vrei să potrivești doar spații orizontale pe același rând, fără a uni rândurile între ele (deoarece\sinclude și\n!). Pentru doar spațiu și tab, folosește[ \t]+sau în PCRE\h+(horizontal whitespace). - Uitarea caracterului non-breaking space (
\u00A0/ ) în PCRE fără flag-ul/u: în ASCII simplu,\snu potrivește .
Simboluri și rețete înrudite
\d și \D (cifre): Scurtătură pentru orice cifră zecimală de la 0 la 9 (\d) sau orice caracter care nu este cifră (\D).\w și \W (caractere de cuvânt): Potrivește litere, cifre și caracterul underscore [a-zA-Z0-9_] (\w) sau opusul acestora (\W).. (orice caracter): Potrivește orice caracter individual, cu excepția caracterului de linie nouă (newline).+ și * (unu sau mai multe / zero sau mai multe): Specifică repetarea elementului precedent de cel puțin o dată (+) sau de zero ori mai multe ori (*).