dev-notes/RegularExpressions.md
2021-01-31 11:05:37 +01:00

2.6 KiB

Common Regex Syntax

Classi Di Caratteri

\d qualsiasi cifra (0-9)
\D qualsiasi carattere non cifra
\s spazio bianco (space, tab, new line)
\S qualsiasi carattere non spazio binaco
\w qualsiasi carattere alfanumerico(a-z, A-Z)
\W qualsiasi carattere non alfanumerico
\b spazio intorno alle parole (solo inizio o fine stringa)
\B spazio intorno alle parole (solo se all'interno della stringa, no ad inizio o fine)
\A ricerca solo all'inizio della stringa
\Z ricerca solo al fondo della stringa
. tutti i caratteri tranne linea nuova (CRLF)

Quantificatori

+ una o più ripetizioni
* zero o più ripetizioni
? zero o una ripetizione
{m} esattamente m volte
{m, n} minimo m volte massimo n volte

The *, x, and ? qualifiers are all greedy; they match as much text as possible
Adding ? after the qualifier makes it perform the match in non-greedy or minimal fashion; as few characters as possible will be matched.

Caratteri Speciali

\a, \b, \f, \n, \r, \t, \u, \U, \v, \x, \\, \?, \*, \+ , \., \^, \$ caratteri speciali
\(, \) escape delle parentesi nella stringa

Delimitatori

^ cerca corrispondenza ad inizio stringa o linea
$ cerca corrispondenza a fondo stringa o linea
^__$ corrispondenza deve essere l'intera stringa

Classi Caratteri

[__] un carattere tra quelli nella classe ([ab] --> a or b)
[__]{m , n} caratteri consecutivi tra quelli nella classe ([aeiou]{2} --> ae, ao, ...)
[a-z] sequenza di caratteri minuscoli
[A-Z] sequenza di caratteri maiuscoli
[a-zA-Z] sequenza di carateri minuscoli o maiuscoli
[a-z][A-Z] equenza di caratteri miuscoli seguiti da sequenza di caratteri maiuscoli
[^__] tutto tranne quello nella classe (attenzione: includere \n per evitare di includere linee multiple di testo)

GLi unici simboli con effetto nelle classi di caratteri sono ^, \, - e ]. Per essere usati devono essere usati come escape: [\]\[\^\-]

Gruppi

(__) sottogruppo della REGEX, utile per raggruppare parti della REGEX
(REGEX_1 | REGEX_2) cerca corrispondenza di REGEX multiple (R1 OR R2)
(?#__) cerca commenti
(?=__) corrisponde solo se __ è prossima substringa
(?!__) corrisponde solo se __ non è prossima substringa
(?<=__) corrisponde se __ è substringa precedente
(?<!__) corrisponde solo se __ non è substringa precedente

\<number> fa riferimento all'n-esimo gruppo.

Casi Particolari

(.*) corrisponde con qualsiasi cosa (.*?) corrisponde con qualsiasi cosa, non-greedy match