# 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 `(?` fa riferimento all'n-esimo gruppo. ## Casi Particolari `(.*)` corrisponde con qualsiasi cosa `(.*?)` corrisponde con qualsiasi cosa, non-greedy match