Hi,
A "*** ERROR C202 IN LINE 33 OF HELLO.C: 'R1': undefined identifier" sorbol szeretnem, ha a \1 "C202", a \2 "33", a \3 "HELLO.C" a \4 pedig a maradek lenne. Azt hittem, a kovetkezo regexp ezt csinalja:
^\*{3} ERROR (.*) IN LINE (\d+) OF (.*): (.*)
De nem, igy \3 "HELLO.C: 'R1'" lesz, mivel a \3 a masodik kettospontig tart az elso helyett.
Mi az a regexp ami olyan eredmenyt ad, amilyet fent irtam?
Koszi,
/sza2
- 4983 megtekintés
Hozzászólások
Szokott lenni a regexpeknek modifier-e, az ungreedy pont erre valo.
Egyebkent itt megkerulheto:
^\*{3} ERROR (.*) IN LINE (\d+) OF (.*): (.*:.*)$
esetleg ha garantalhato, hogy a HELLO.C-ben nincs ":"
^\*{3} ERROR (.*) IN LINE (\d+) OF ([^:]*): (.*)$
--
Tudod te, mennyi lóvé fér egy Alstom-kocsi dobozába? :)) - laspalmas, VB
- A hozzászóláshoz be kell jelentkezni
Ok, koszi.
A masodik kifejezes jo lesz nekem. Nem specifikaltam pontosan a feladatot. Tehat a HELLO.C reszen gyakorlatilag kizarhato a kettospont megjelenese, viszont nincs mindig masodik kettospont, igy az elso kifejezes nem illik ra, ha hianyzik.
/sza2
- A hozzászóláshoz be kell jelentkezni
Hát nem .* - hanem [^:]* kéne - ez úgy első ránézésre
- A hozzászóláshoz be kell jelentkezni
Koszi.
- A hozzászóláshoz be kell jelentkezni
a greedy .* helyett használhatsz .*? kifejezést ami egy lazy_quantification.
Több mód is van, legalább kettőt már mondtak előttem, azok teljesítmény szempontjából jobbak is.
Ezt szerezd be:
Mastering Regular Expressions By Jeffrey E.F. Friedl
http://oreilly.com/catalog/9780596528126
- A hozzászóláshoz be kell jelentkezni
^\*{3} ERROR (.*) IN LINE (\d+) OF ([^:]*): (.*)$
helyett:
^\*{3} ERROR (.*?) IN LINE (\d+) OF ([^:]*): (.*)$
ha az "IN LINE" szerepelne mondjuk a \3-ban van a \4-ben, akkor ugyanugy borulhatna mint a kettospontoddal.
- A hozzászóláshoz be kell jelentkezni
Felteszem, ez valami fordito/IDE hibauzenete lesz, ugyhogy nem valoszinu, hogy ott is elofordul. De persze ha felkesziti erre is, az nem baj.
--
Tudod te, mennyi lóvé fér egy Alstom-kocsi dobozába? :)) - laspalmas, VB
- A hozzászóláshoz be kell jelentkezni