Takže s regulárnym výrazom v jave chcem napísať regulárny výraz, ktorý bude zodpovedať iba vtedy, ak vzoru nebudú predchádzať určité znaky. Napríklad:
String s = "foobar barbar beachbar crowbar bar ";
Chcem sa vyrovnať, ak baru predchádza foo. Výstup by teda bol:
barbar
beachbar
crowbar
bar
Viem, že je to pravdepodobne veľmi jednoduchá otázka. Snažím sa naučiť regex, ale zatiaľ potrebujem niečo, aby som teraz pracoval.
odpovede:
145 pre odpoveď č. 1Chcete použiť negative lookbehind
ako toto:
w*(?<!foo)bar
Kde (?<!x)
znamená „iba ak nemá pred týmto bodom„ x ““.
vidieť Regulárne výrazy - prehľad Pre viac informácií.
editovať: pridal w*
na zachytenie znakov skôr (napr. „pláž“).