2012-07-19 17 views
22

Non sono sicuro se questo è esattamente possibile. Considera questo esempio di dati:Regex per abbinare la frase esatta, niente prima o dopo la frase

Mountain 
Big mountain 
Mountain of stone 
A mountain on a hill 

Voglio abbinare Mountain. Nient'altro. Nessun'altra parte di quel set. Solo la linea esatta, Montagna. Tutto ciò che ho provato o corrisponde a tutte le istanze di Mountain o a nessuna di esse. Un sacco di persone vogliono abbinare una parola o una frase esatta, ma mi sembra di essere l'unico che vuole abbinare solo una parola o frase esatta.

Se questo PU CAN essere esteso ad una frase che sarebbe perfetta. Si supponga:

Go for a hike 
Go for a hike, on a mountain. 
I want to go for a hike. 

Dove voglio solo match "Vai a fare una passeggiata", ma nessuna frase che lo contiene.

risposta

34

per abbinare la linea esatta "Montagna" utilizzare questo: /^Mountain$/

Non hai detto che lingua si sta lavorando, in modo che la forma esatta del modello potrebbe essere necessario cambiare.

+11

Il ''^significa: all'inizio della riga. '$' Significa: fine riga. – jahroy

+5

@jahroy: In realtà, '^' significa inizio * di input *, e '$' significa fine * di input * (o appena prima di una nuova riga alla fine dell'input). È solo quando si specifica la modalità multilinea ('/^Montagna $/m', o' "(? M)^Montagna $" ') che significano inizio e fine * della linea *. –

+0

Buon punto. Stavo solo cercando di spiegare i simboli all'OP. In questo caso, l'input sarà una riga di testo (presumibilmente). – jahroy

2

Se si dispone di una stringa che contiene più righe, i seguenti due espressioni regolari possono aiutare:

\r\nWORD\r\n|^WORD\r\n|\r\WORD$|^WORD$ 

\r\nA\sPHRASE\r\n|^A\sPHRASE\r\n|\r\A\sPHRASE$|^A\sPHRASE$ 
+0

La persona sopra aveva un'espressione che funzionava perfettamente per quello di cui avevo bisogno, ma grazie per il suggerimento. Proverò questo per frasi se avrò problemi. – phobiac

Problemi correlati