Lecții din modul (3/4)
Wildcard: punctul `.`
Punctul . din regex este caracterul metalic: se potrivește cu orice singur
caracterul\u2026 cu o excepție importantă: NU se potrivește cu
linie nouă (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^Trei litere: un c, orice caracter, un t. Nicio linie nouă între ele, așa că c\nt
nu se potrivește (în mod implicit).
Punctul este extrem de util, dar și periculos: folosit fără disciplină
captează mai mult decât ai vrut. Combinat cu cuantificatorii din modulul 2
(.*, .+?) este sursa a 90% dintre modele care „nu funcționează așa cum eu
aşteptat”.
Indicatorul s: „dotAll”
Cu indicatorul s (numit și dotAll sau single-line), punctul se potrivește
fiecare caracter, linie nouă inclusă. Util pentru extragerea blocurilor care se întind
linii multiple.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^Limitele și comportamentul wildcard-ului punct
Punctul . este un wildcard puternic, dar implicit nu se potrivește cu caracterele de linie nouă (\\n). Dacă doriți ca punctul să se potrivească cu absolut tot, inclusiv liniile noi, trebuie să activați marcajul s (dotAll). Aveți grijă când combinați punctul cu cuantificatori (.*), deoarece tinde să consume prea mult text (comportament lacom).
Încearcă
Găsiți fiecare triplet de caractere delimitat de paranteze, de ex. `(abc)`, `(xyz)`. Utilizați wildcard pentru cele 3 caractere interioare.
Afișează indiciu
Trei puncte pentru trei caractere arbitrare. Parantezele sunt meta-caractere: ele trebuie scăpate cu \\.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Extrageți blocul dintre `[INIZIO]` și `[FINE]`, care poate cuprinde mai multe linii. Veți avea nevoie de indicatorul `s`, astfel încât punctul să se potrivească, de asemenea, cu liniile noi și versiunea 'lenesă' a cuantificatorului (`.*?`, modulul 2).
Afișează indiciu
Fără steagul s, punctul se oprește la capătul liniei: adaugă-l. Formularul .*? (leneș) oprește meciul la prima [FINE].
Soluție disponibilă după 3 încercări
Provocare suplimentară
Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).
Afișează indiciu
Modelul folosește punctul '.' pentru a reprezenta caracterul din mijloc cu wildcard.
Soluție disponibilă după 3 încercări