PCRE knihovna a (?<!foo)bar

David Olszyński hisaak na mrkvoslav.ascs.muni.cz
Čtvrtek Červen 13 18:56:35 CEST 2002


Zdenek Pizl wrote:

> DD,
> 
>  resim problem, kteremu ani nechci verit :( Manualova stranka rika, ze
> <citace>
>  '(?<!foo)bar' does find an occurrence of "bar" that is not preceded by
>  "foo"
> </citace>
> 
> tedy:
> 
> $ echo "foobar" >> pokus
> $ echo "barbar" >> pokus
> $ echo "foo bar" >> pokus
> $ pcregrep '(?<!foo)bar' pokus
> barbar
> foo bar
> 
> - a ja tam nechci ani to 'foo bar' ani jiny podobny text
> 'fooLIBOVOLNYTEXTbar'. Predpokladal jsem, ze to vyresi vyraz
> (?<!foo).*bar, lae to mi nejako nejde, respektive vypise to vsechno misto
> pouze radku "barbar".

Tenhle vyraz to nevyresi, protoze to .* se bude shodovat se vsim, co je pred 
bar a to (?<!foo) bude platit na zacatku retezce, protoze pred prvnim znakem 
neni nic a tudiz ani foo (aspon myslim:-).
Musite vzdy pocitat s tim, ze regularni vyrazy se snazi shody hledat!

> PouZivam PCRE -3.9.0
> 
> Takze otazka zni: "jak na to ??"

Ted hned me nenapada, jak (a jestli) to pujde tak, jak chcete, ale mozna vam 
pomuze tohle:
$ grep -v 'foo.*bar' pokus
barbar
$

Mimochodem unika mi souvislost s Linuxem. ;-)

hisaak



Další informace o konferenci Linux