Portál AbcLinuxu, 19. července 2025 12:05


Dotaz: C knihovna regex

3.9.2004 13:45 p.prm
C knihovna regex
Přečteno: 514×
Odpovědět | Admin
Dobry den,

zajimalo by me proc pri pouziti knihovny regex.h (libregex0) mi matchuje tento retezec: abclinuxuXYZBLABLA s timto regularnim vyrazem .*abclinuxu Vzdyt prece retezec matchuje s regularnim vyrazem pokud mu odpovida cely a tento regularni vyraz rika ze na konci retezce MUSI byt podretezec abclinuxu a za nim uz nic nesmi byt.

pouzivam to takto:

#include regex.h

int

main() {

int gg;

regex_t re;

char reg_string[100];

char muj_string[100];

scanf("%s",pole);

regcomp(&re,reg_string,REG_NOSUB);

scanf("%s",poole);

gg = regexec(&re,muj_string,(size_t)0, NULL, 0);

printf("regex: %d\n",gg);

return 0;

}
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.9.2004 14:30 ivok
Rozbalit Rozbalit vše Re: C knihovna regex
Odpovědět | | Sbalit | Link | Blokovat | Admin
.*abclinuxu není .*abclinuxu$
3.9.2004 14:49 p.prm
Rozbalit Rozbalit vše Re: C knihovna regex
jo diky, spatne sem pochopil logiku te funkce. Ona nezjistuje jestli ten retezec odpovida tomu regularnimu vyrazu ale zjistuje jestli existuje podretezec toho retezce ktery mu odpovida.
3.9.2004 16:36 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: C knihovna regex
Matchování regulárních výrazů takhle funguje všude, od grepu po PHP (snad kromě pythonu, kde existují dvě funkce, a match se jmenuje zrovna ta opačná). Když chceš na začátku výrazu ^ a na konci $, tak je tam napiš.
egg avatar 3.9.2004 14:47 egg | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: C knihovna regex
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bere se to jakoby na obou stranách regexp bylo navíc .*

Chceš-li explicitně říct, že ten regexp se musí vyskytovat těsně na začátku řetězce, napíšeš ^regexp. Má-li se vyskytovat na konci, napíšeš regexp$. Má-li řetězec vyhovovat výrazu přesně od začátku do konce, napíšeš ^regexp$. Znaky ^ a $ zastupují prázdný řetězec na začátku resp. konci řádku. Viz man grep.
Proč led klouže? --Aldebaran bulletin
3.9.2004 14:53 p.prm
Rozbalit Rozbalit vše Re: C knihovna regex
jasne ;) vim jak se pouzivaji regexpy v grepu ale nejak sem zil v mylne predstave ze ta knihovna s tim retezcem bude pracovat jako konecny automat :) Diky za odpovedi

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.