Viem, že môžem urobiť nasledujúce [^ h] dostať všetky zápasy prijať tie s "h". Ako by som to urobil s celým slovom, ako ^ (slovo)
odpovede:
9 pre odpoveď č. 1Ak chcete, aby reťazec zodpovedal nie je totožné s foo
:
^(?!foo).*$
Ak chcete, aby reťazec zodpovedal neobsahuje foo
:
^(?!.*foo).*$
Ak chcete priradiť reťazec, ktorý neobsahuje foo
ako úplné slovo:
^(?!.*bfoob).*$
Ak chcete priradiť reťazec kým foo
objavia a skôr zastavte zápas foo
:
^(?:(?!foo).)*
Tieto riešenia nespracujú nové riadky v reťazci, takže možno budete musieť nastaviť zodpovedajúce možnosti regexu RegexOptions.Singleline
.NET, ak je to problém.
(?!foo)
je a výraz nulovej šírky spätného vyhľadávania, čo znamená, že to nie je možné ("negatívne"), aby sa zhodovalo foo
nasledujúcu aktuálnu pozíciu v reťazci ("vzhľad." vpred"), pričom nespotrebováva žiadne znaky v pokuse o zápas (" nula-šírka ").
3 pre odpoveď č. 2
Neexistuje naozaj dobrý spôsob, ako to urobiť s regulárnymi výrazmi. Najbližšie, čo môžete získať, je použiť negatívny vzhľad ktorý nájde regulárny výraz iba ak nie je nasledovaný reťazcom v zápornom spätnom hlave…:
foo(?!word)
Nájde len foo
nenasleduje word
.
To isté platí pre pozeranie pozadu (namiesto toho dopredu):
(?<!word)foo
Nájde len foo
ak tomu tak nie je word
.