Wyrażenie regularne dla ciągu znaków zawiera?


114

Co to jest wyrażenie regularne do prostego sprawdzania, czy ciąg zawiera określone słowo (np. „Test”)? Zrobiłem trochę googlowania, ale nie mogę znaleźć prostego przykładu takiego wyrażenia regularnego. To jest dla skryptu kompilacji, ale nie ma związku z żadnym konkretnym językiem programowania.

Odpowiedzi:


78

Zakładając regularne smaki wyrażeń regularnych w stylu PCRE:

Jeśli chcesz sprawdzić, czy to jako pojedyncze, pełne wyrazu , to \bTest\bz odpowiednimi flagami przez przypadek niewrażliwości razie potrzeby i ograniczniki dla danego języka programowania. \breprezentuje „granicę słowa”, to znaczy punkt między znakami, w którym słowo można uznać za początek lub koniec. Na przykład, ponieważ spacje są używane do oddzielania słów, po obu stronach spacji będzie granica słowa.

Jeśli chcesz sprawdzić, czy jest to część słowa , po prostu Testznowu z odpowiednimi flagami dla niewrażliwości na wielkość liter. Zwróć uwagę, że zazwyczaj dedykowane metody „podciągowe” są w tym przypadku szybsze, ponieważ eliminują narzut związany z analizowaniem wyrażenia regularnego.


1
\breprezentuje„ granicę słowa ”, to znaczy coś, co oddziela dwa słowa (np. spacja)”. \bnie pasuje do spacji; jest to stwierdzenie, które dopasowuje między znakami (lub w większości przypadków na początku lub na końcu wiersza).
strager

1
@strager: Tak, masz rację - moje wyjaśnienie było trochę nieprecyzyjne. Będę edytować.
Michael Madsen,

117

Po prostu nie zakotwiczaj swojego wzoru:

/Test/

Powyższe wyrażenie regularne sprawdzi, czy gdzieś w nim nie znaleziono literału „Test”.


2
Dzięki, nie wiedziałem, że to takie proste! Na pewno nie widziałem tego w Google. Co masz na myśli mówiąc „nie zakotwiczaj mojego wzoru”?
GurdeepS

7
Możesz zakotwiczyć wzorzec, aby dopasować go do początku lub końca ciągu, np. / ^ Test / lub / Test $ / lub nawet / ^ Test $ /, aby dokładnie dopasować. Przykład jest głupi, ponieważ nie zapewnia żadnych korzyści w porównaniu z porównywaniem pod kątem równości, ale na przykład podczas sprawdzania poprawności pola formularza wyrażenie regularne takie jak / ^ \ d + $ / będzie pasować tylko wtedy, gdy pole zawiera co najmniej jedną cyfrę i tylko cyfry.
David Clarke,

-13

Jestem spóźniony o kilka lat, ale dlaczego nie to?

[Tt][Ee][Ss][Tt]

4
Ta odpowiedź pojawiła się w kolejce recenzji niskiej jakości, prawdopodobnie dlatego, że nie wyjaśniłeś kodu. Jeśli to wyjaśnisz (w swojej odpowiedzi), jest o wiele bardziej prawdopodobne, że otrzymasz więcej głosów pozytywnych - a pytający faktycznie się czegoś nauczy!
Facet z kapeluszem

6
Nie da się tego zbytnio uogólnić - wyobraź sobie, że słowo, którego szukasz, pochodzi od użytkownika. Musiałbyś wygenerować [Aa]wzór dla każdej litery i bardzo szybko stałby się dość brzydki.
Platinum Azure
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.