Regularni vyrazy v glibc

David Kuzela kuzela na mbox.vol.cz
Úterý Září 14 21:44:46 CEST 1999


Zdravim vsechny,

narazil jsem na problem ktery nechapu. Experimentoval jsem s
regexpy v Cecku a zjistil, ze mam-li stringy:

char s1[]="nejaka hezka {hlaska}",
     s2[]=".*a[ \t].* {Hlaska}",
     s3[]=".*a[ \t].* {hla{1,3}ska}";

pak po zkompilovani s2 i s3 (s flagem REG_EXTENDED) souhlasi
s s1. Pokud se pokusim pouzit \{1,3\}, dozvim se, ze:

   unknown escape sequence `\}'

Result:
=> pokud pouziji uvnitr {} pismena jde o normalni znaky, pokud
jsou tam cisla, jde o soucast masky. Otazka je nasnade. Jak 
tedy zadat shodu s retezcem s1[]="{1,5}" bez pouziti metaznaku?

To, ze se gcc nezna k '\}' si navic protireci s dokumentaci 
(info libc), kde se pise:

   `REG_BADBR'
        There was an invalid `\{...\}' construct in the regular
        expression.  A valid `\{...\}' construct must contain either a
        single number, or two numbers in increasing order separated by a
        comma.

Verze:
   libc   2.1.2-0pre6
   gcc    2.7.2.3-4.8

-- 
                                   David Kuzela
==[Dawyd]======[icq]=[24470559]===================
 email:       kuzela na mbox.vol.cz   Student of VSE
 web:   http://penguin.cz/~dawyd   Czech republic
==================================================


Další informace o konferenci Linux