PHP - Espressioni regolari
Le espressioni regolari non sono altro che una sequenza o un modello di caratteri stesso. Forniscono la base per la funzionalità di corrispondenza dei modelli.
Usando l'espressione regolare puoi cercare una stringa particolare all'interno di un'altra stringa, puoi sostituire una stringa con un'altra stringa e puoi dividere una stringa in molti blocchi.
PHP offre funzioni specifiche per due serie di funzioni di espressioni regolari, ciascuna corrispondente a un certo tipo di espressione regolare. Puoi usarli in base al tuo comfort.
- Espressioni regolari POSIX
- Espressioni regolari in stile PERL
Espressioni regolari POSIX
La struttura di un'espressione regolare POSIX non è dissimile da quella di una tipica espressione aritmetica: vari elementi (operatori) vengono combinati per formare espressioni più complesse.
L'espressione regolare più semplice è quella che corrisponde a un singolo carattere, come g, all'interno di stringhe come g, haggle o bag.
Forniamo una spiegazione per alcuni concetti utilizzati nell'espressione regolare POSIX. Dopodiché ti presenteremo le funzioni relative alle espressioni regolari.
Parentesi
Le parentesi ([]) hanno un significato speciale se usate nel contesto di espressioni regolari. Sono usati per trovare un intervallo di caratteri.
Suor n | Espressione e descrizione |
---|---|
1 | [0-9] Corrisponde a qualsiasi cifra decimale compresa tra 0 e 9. |
2 | [a-z] Corrisponde a qualsiasi carattere dalla a minuscola alla z minuscola. |
3 | [A-Z] Corrisponde a qualsiasi carattere dalla A maiuscola alla Z maiuscola. |
4 | [a-Z] Corrisponde a qualsiasi carattere dalla a minuscola alla Z maiuscola. |
Gli intervalli mostrati sopra sono generali; puoi anche usare l'intervallo [0-3] per trovare qualsiasi cifra decimale compresa tra 0 e 3, o l'intervallo [bv] per trovare qualsiasi carattere minuscolo compreso tra b e v.
Quantificatori
La frequenza o la posizione delle sequenze di caratteri tra parentesi e dei singoli caratteri può essere indicata da un carattere speciale. Ogni personaggio speciale ha una connotazione specifica. Il +, *,?, {Int. range} e $ flag seguono tutti una sequenza di caratteri.
Suor n | Espressione e descrizione |
---|---|
1 | p+ Corrisponde a qualsiasi stringa contenente almeno una p. |
2 | p* Corrisponde a qualsiasi stringa contenente zero o più p. |
3 | p? Corrisponde a qualsiasi stringa contenente zero o una p. |
4 | p{N} Corrisponde a qualsiasi stringa contenente una sequenza di N p's |
5 | p{2,3} Corrisponde a qualsiasi stringa contenente una sequenza di due o tre p. |
6 | p{2, } Corrisponde a qualsiasi stringa contenente una sequenza di almeno due p. |
7 | p$ Corrisponde a qualsiasi stringa con p alla fine di essa. |
8 | ^p Corrisponde a qualsiasi stringa con p all'inizio di essa. |
Esempi
I seguenti esempi chiariranno i tuoi concetti sulla corrispondenza dei caratteri.
Suor n | Espressione e descrizione |
---|---|
1 | [^a-zA-Z] Corrisponde a qualsiasi stringa che non contenga nessuno dei caratteri che vanno dalla a alla ze dalla A alla Z. |
2 | p.p Corrisponde a qualsiasi stringa contenente p, seguita da qualsiasi carattere, a sua volta seguita da un'altra p. |
3 | ^.{2}$ Corrisponde a qualsiasi stringa contenente esattamente due caratteri. |
4 | <b>(.*)</b> Corrisponde a qualsiasi stringa racchiusa tra <b> e </b>. |
5 | p(hp)* Corrisponde a qualsiasi stringa contenente ap seguito da zero o più istanze della sequenza php. |
Intervalli di caratteri predefiniti
Per comodità di programmazione sono disponibili diversi intervalli di caratteri predefiniti, noti anche come classi di caratteri. Le classi di caratteri specificano un intero intervallo di caratteri, ad esempio l'alfabeto o un insieme di numeri interi -
Suor n | Espressione e descrizione |
---|---|
1 | [[:alpha:]] Corrisponde a qualsiasi stringa contenente caratteri alfabetici da aA a zZ. |
2 | [[:digit:]] Corrisponde a qualsiasi stringa contenente cifre numeriche da 0 a 9. |
3 | [[:alnum:]] Corrisponde a qualsiasi stringa contenente caratteri alfanumerici da aA a zZ e da 0 a 9. |
4 | [[:space:]] Corrisponde a qualsiasi stringa contenente uno spazio. |
Funzioni Regexp POSIX di PHP
PHP attualmente offre sette funzioni per la ricerca di stringhe utilizzando espressioni regolari in stile POSIX -
Suor n | Descrizione della funzione |
---|---|
1 | ereg () La funzione ereg () cerca una stringa specificata da string per una stringa specificata da pattern, restituendo true se il pattern viene trovato e false in caso contrario. |
2 | ereg_replace () La funzione ereg_replace () cerca la stringa specificata da pattern e sostituisce pattern con sostituzione se trovata. |
3 | eregi () La funzione eregi () cerca in una stringa specificata da pattern una stringa specificata da string. La ricerca non fa distinzione tra maiuscole e minuscole. |
4 | eregi_replace () La funzione eregi_replace () opera esattamente come ereg_replace (), tranne per il fatto che la ricerca di pattern in string non fa distinzione tra maiuscole e minuscole. |
5 | Diviso() La funzione split () dividerà una stringa in vari elementi, i confini di ogni elemento in base all'occorrenza del pattern in string. |
6 | spliti () La funzione spliti () opera esattamente nello stesso modo della sua sorella split (), tranne per il fatto che non fa distinzione tra maiuscole e minuscole. |
7 | sql_regcase () La funzione sql_regcase () può essere pensata come una funzione di utilità, che converte ogni carattere nella stringa del parametro di input in un'espressione tra parentesi contenente due caratteri. |
Espressioni regolari in stile PERL
Le espressioni regolari in stile Perl sono simili alle loro controparti POSIX. La sintassi POSIX può essere utilizzata quasi in modo intercambiabile con le funzioni di espressioni regolari in stile Perl. In effetti, puoi utilizzare uno qualsiasi dei quantificatori introdotti nella sezione POSIX precedente.
Forniamo una spiegazione per alcuni concetti utilizzati nelle espressioni regolari PERL. Dopodiché ti presenteremo le funzioni relative alle espressioni regolari.
Meta caratteri
Un meta carattere è semplicemente un carattere alfabetico preceduto da una barra rovesciata che agisce per dare alla combinazione un significato speciale.
Ad esempio, puoi cercare grandi somme di denaro utilizzando il meta carattere "\ d": /([\d]+)000/, Qui \d cercherà qualsiasi stringa di caratteri numerici.
Di seguito è riportato l'elenco dei metacaratteri che possono essere utilizzati nelle espressioni regolari in stile PERL.
Character Description
. a single character
\s a whitespace character (space, tab, newline)
\S non-whitespace character
\d a digit (0-9)
\D a non-digit
\w a word character (a-z, A-Z, 0-9, _)
\W a non-word character
[aeiou] matches a single character in the given set
[^aeiou] matches a single character outside the given set
(foo|bar|baz) matches any of the alternatives specified
Modificatori
Sono disponibili diversi modificatori che possono rendere il tuo lavoro con le espressioni regolari molto più semplice, come la distinzione tra maiuscole e minuscole, la ricerca su più righe ecc.
Modifier Description
i Makes the match case insensitive
m Specifies that if the string has newline or carriage
return characters, the ^ and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for clarity
g Globally finds all matches
cg Allows a search to continue even after a global match fails
Funzioni compatibili con PHP Regexp PERL
PHP offre le seguenti funzioni per la ricerca di stringhe utilizzando espressioni regolari compatibili con Perl:
Suor n | Descrizione della funzione |
---|---|
1 | preg_match () La funzione preg_match () ricerca string per pattern, restituendo true se pattern esiste e false in caso contrario. |
2 | preg_match_all () La funzione preg_match_all () trova tutte le occorrenze di pattern in string. |
3 | preg_replace () La funzione preg_replace () opera esattamente come ereg_replace (), tranne per il fatto che le espressioni regolari possono essere utilizzate nel pattern e nei parametri di input sostitutivi. |
4 | preg_split () La funzione preg_split () opera esattamente come split (), tranne per il fatto che le espressioni regolari sono accettate come parametri di input per pattern. |
5 | preg_grep () La funzione preg_grep () ricerca tutti gli elementi di input_array, restituendo tutti gli elementi che corrispondono al pattern regexp. |
6 | preg_ quote () Cita i caratteri delle espressioni regolari |