Próbuję wyszukać wszystkie wystąpienia "Toma", które nie są poprzedzone "Kciukiem".Wykluczenie RegExp, szukanie słowa, które nie następuje po innym
Próbowałem szukać
Tom ^((?!Thumb).)*$
ale wciąż linie, które pasują do Tom Thumb.
Próbuję wyszukać wszystkie wystąpienia "Toma", które nie są poprzedzone "Kciukiem".Wykluczenie RegExp, szukanie słowa, które nie następuje po innym
Próbowałem szukać
Tom ^((?!Thumb).)*$
ale wciąż linie, które pasują do Tom Thumb.
Nie mów co smak regex używasz, ale to powinno działać w ogóle:
Tom(?!\s+Thumb)
To jest wyszukiwanie tekstu uruchamiane na forum phpbb. – user1364539
Nadal je otrzymuj :-( – user1364539
Co masz na myśli: "nadal je zdobywaj?" Nadal dostajesz co? Abyśmy mogli Ci pomóc, musisz opublikować więcej kodu, kilka przykładowych danych wejściowych i pożądanych wyników, i więcej informacje na temat tego, co dokładnie próbujesz zrobić. To wyrażenie zdecydowanie nie będzie pasować do "Toma", a następnie "Kciuka" (o ile twoja implementacja regex obsługuje negatywne uprzedzenia), więc nie jestem pewien, co znaczy "nadal ich zdobądź". – alan
Tom(?!\s+Thumb)
jest to, czego szukać.
Jeśli nie szukasz całych wyrazów, można użyć następującego wyrażenia regularnego:
Tom(?!.*Thumb)
Zobacz this regex demo
Jeśli szukasz całych słów (czyli całe słowo Tom
powinno być jedynie dopasowana jeśli nie całe słowo Thumb
dalej na prawo od niego), użyj
\bTom\b(?!.*\bThumb\b)
Zobacz another regex demo
zauważyć, że:
\b
- mecze wiodącym/końcowe słowo granica(?!.*Thumb)
- to ujemny uprzedzona że nie mecz, czy są jakieś 0+ znaków (w zależności od silnika, w tym/wyłączając symbole linii łamania), a następnie Thumb
.
Nawet w prostym przypadku, takim jak to, zawsze pomocne jest wprowadzenie niektórych danych wejściowych i oczekiwanych wyników. np. czy chcesz dopasować tylko "Tom" lub "Tom + wszystko do końca linii"? – alan
Postaram się być bardziej konkretny. Chcę znaleźć dowolne wystąpienie "Toma" w dowolnym miejscu wiersza, ale nie chcę widzieć żadnej linii zawierającej "Tom Thumb" – user1364539