libc regex.h

 ( kisauto | 2012. június 27., szerda - 14:35 )

Helló,

a tapasztalatotok kellene.

egy kollégám szerint használjak bármit, csak ne a libc regcomp / regexec -et.
Mi a véleményetek? Kollégám indoklása: "merszar", de nekem, teljesen alap szövegértelmezéshez eddig úgytünik tökéletes.
(REG_EXTENDED flaggel).
köszi,

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

>> Kollégám indoklása: "merszar"

Kicsit bővebben?

nincs bovebben, nem reszletezte valojaban.
olyat mondott, hogy 'ertelmetlenul sok memoriat zabal' es 'ertelmetlenul lassu'.

igy kb. nem tekintem ertelmes valasznak sem, hanem kerdeznek konkret tapasztalatokat.

nekem eddig tokeletesen jo. nem vettem eszre semmi 'zavaro' dolgot.

Végülis attól függ, mire kell. A regexp egy univerzális cucc. Ha univerzális keresésre van szükséged, akkor az szerintem arra jó.
De ha például egy szövegben kell egy szót megkeresned, arra nem regexp-et használnék, mivel arra az strstr sokkal gyorsabb.

Tehát a feladat és a körülmények nagyban eldöntik, mit célszerű használni.

teljesen egyet ertunk :)
en regexpkent akarom hasznalni :)

tipikus, hogy van egy c_str, amibol kell a 2. 7. es mondjuk a 8. group, amik mondjuk rendes regexp kifejezesek.

A regexp-pel általában az a baj, hogy nagyon nehéz a kivételes esetek helyes kezelése. Egy rakás gyengébb minőségű program van, ami valami regexp-es megoldásnál hasal el egy olyan bemenetre, amire a program készítője nem számított (de a specifikáció szerint értelmes lenne).

Sokkal jobb az adatok formátumát eleve úgy megtervezni, hogy a szöveges ábrázolásból egyértelmű módon valami struktúrává lehet alakítani (xml, csv, java property file, bármi, csak pontosan legyen specifikálva benne a karakter kódolás és az eszképelés mikéntje). És utána a struktúrán lekérdezni az n. elemet immáron egyszerű címzéssel.

Ha eltekintunk attol hogy pl. Purify uninitialized memory read hibakat jelez benne hasznalat kozben, akkor lehet hasznalhato de en is inkabb tavol maradnek tole :)

de ezt AIX -en, vagy hol? Linuxon?
Jelenleg nekem csak az OSX + Linux a cel ( meg nyilvan a BSD ).

Linux.

nagyon koszonom, megnezem!

mi lenne, ha PCRE-t tennel bele?

http://www.pcre.org/

nincs igazan jo okom azt mondani, hogy nem.
megnezem, a libc mellett az szol, hogy tenyleg csak 1 header es 0 lib.

A GNU grepben vannak arra utaló dolgok, hogy tényleg sok memóriát zabál (rlimit-et állít be a grep). Ha nem kell szigorú POSIX, akkor használj RE2-t, sokan mondták, hogy az a leggyorsabb, bár az C++. Amúgy a a komplexitásban a TRE sem rossz, bár kisebb illesztéseknél van egy kis overhead, de jól skálázódik.