Zpracovani regularnich vyrazu funkcemi z regex.h (nacitani konfiguracniho souboru)

Ladislav Vaiz spam na nagano.cz
Čtvrtek Únor 23 07:51:01 CET 2006


Postgres patrne používá perlovéregulární výrazy. Liší se zejména ve 
významu závorek. Ve vašem případě bych zkusil přidat před závorky znak 
backslash (\). Protože je to v C speciální znak, tak ho musíte zapsat 
jako dva:

perr = regcomp(&preg, "^\\(?! *#\\)\\(.+\\)", REG_ICASE | REG_EXTENDED)));

Kdybyste neměl flag REG_EXTENDED, tak musíte eskejpovat i +.  Pokud jsem 
ale pochopil váš úmysl, tak bych zde použil hvězdičku, protože za # 
nemusí být už žádný znak a také je to komentář.

La'd"a

Zdenek Janis wrote:

>Dobry den,
>v progarmu (v C) nacitam konfiguracni soubor po radcich a chtel jsem
>pouzit funkce z regex.h abych rozpoznal komentar, prazdne radky a
>konfiguracni hodnoty.
>Ale jsem zmaten, neb to co mi funguje v PostgreSQL (tam si to testuji)
>hlasi chybu v regcomp():
>
><code>
>
>regex_t preg;
>int perr;
>perr = regcomp(&preg, "^(?! *#)(.+)", REG_ICASE | REG_EXTENDED)));
>
></code>
>
>regerror(): "Invalid preceding regular expression"
>
>Co je spatne? Ma PostgreSQL jine regexp? Pokud ano, jak regularni vyraz
>zapasat jinak?
>
>  
>



Další informace o konferenci Linux