2012-07-19 18 views
22

Nie jestem pewien, czy jest to dokładnie możliwe. Rozważmy ten przykładowy zestaw danych:Regex, aby dopasować dokładną frazę, nic przed lub po frazie

Mountain 
Big mountain 
Mountain of stone 
A mountain on a hill 

Chcę dopasować Mountain. Nic więcej. Żadnych innych części tego zestawu. Dokładnie linia, Mountain. Wszystko, co próbowałem, to mecze dla wszystkich instancji Mountain lub dla żadnego z nich. Wiele osób chce dopasować dokładnie słowo lub frazę, ale wydaje mi się, że jestem jedynym, który chce dopasować tylko jedno dokładne słowo lub frazę.

Jeśli to MOŻNA rozszerzyć na frazę, która byłaby idealna. Załóżmy:

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

Miejsce, w którym chcę dopasować tylko "Przejdź na wycieczkę", ale nie zawiera frazy.

Odpowiedz

34

Aby dopasować dokładna linia „Mountain” użyj: /^Mountain$/

Nie wspomniano co język pracujesz w tak dokładna postać wzoru może trzeba zmienić.

+11

Opcja ''^oznacza początek linii. '$' Oznacza: koniec linii. – jahroy

+5

@jahroy: W rzeczywistości '^" oznacza początek * wejścia *, a '$' oznacza koniec * wejścia * (lub tuż przed znakiem nowej linii na końcu wejścia). Dopiero gdy wybierzesz tryb multilinii ('/^Mountain $/m' lub' "(? M)^Mountain $" '), będą one oznaczać początek i koniec * linii *. –

+0

Dobra uwaga. Próbowałem tylko wyjaśnić symbole OP. W tym przypadku dane wejściowe będą wierszem tekstu (przypuszczalnie). – jahroy

2

Jeśli masz ciąg, który zawiera wiele wierszy, następujące dwa wyrażenia regularne mogą pomóc:

\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

Osoba powyżej miała wyrażenie, które idealnie pasowało do tego, czego potrzebowałem, ale dziękuję za sugestię. Spróbuję tego dla fraz, jeśli będę miał kłopoty. – phobiac

Powiązane problemy