Per abbinare qualsiasi parola intera dovresti usare il modello (\w+)
Supponendo che tu stia utilizzando PCRE o qualcosa di simile:
Schermata sopra presa da questo esempio dal vivo: http://regex101.com/r/cU5lC2
Abbinando qualsiasi parola intera sulla riga di comando con (\w+)
Sarò utilizzando la shell interattiva phpsh su Ubuntu 12.10 dimostrare il motore PCRE regex attraverso il metodo noto come preg_match
Avvia phpsh, metti del contenuto in una variabile, abbina parole.
el@apollo:~/foo$ phpsh
php> $content1 = 'badger'
php> $content2 = '1234'
php> $content3 = '$%^&'
php> echo preg_match('(\w+)', $content1);
1
php> echo preg_match('(\w+)', $content2);
1
php> echo preg_match('(\w+)', $content3);
0
Il metodo preg_match utilizzato il motore PCRE all'interno del linguaggio PHP per analizzare le variabili: $content1
, $content2
e $content3
con il (\w)+
modello.
$ content1 e $ content2 contengono almeno una parola, $ content3 no.
Abbina un numero di parole letterali sulla riga di comando con (dart|fart)
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(dart|fart)', $gun1);
1
php> echo preg_match('(dart|fart)', $gun2);
1
php> echo preg_match('(dart|fart)', $gun3);
1
php> echo preg_match('(dart|fart)', $gun4);
0
le variabili gun1 e gun2 contengono la stringa dart o fart. gun4 no. Tuttavia può essere un problema che la ricerca di fart
corrispondenze di parole farty
. Per risolvere questo problema, applica i confini delle parole nella regex.
Abbina le parole letterali sulla riga di comando con i confini delle parole.
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(\bdart\b|\bfart\b)', $gun1);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun2);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun3);
0
php> echo preg_match('(\bdart\b|\bfart\b)', $gun4);
0
Quindi è la stessa dell'esempio precedente, tranne che la parola fart
con un \b
limite di parola non esiste nel contenuto: farty
.