QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

  • mongolili: V/14. ELP=Emerson, Lake and Palmer (a Cozy Powell-es felállás csak egyfajta "utóélet" volt) (2020.04.11. 22:45) [Zene] After Crying: 6 (1997)
  • törzsmókus: az első tecső link Chopint ad, nem Mahalát :( a másodiknál meg biztos van azóta jobb minőség… (2016.11.11. 13:27) [Zene] Besh o droM: Macsó hímzés
  • TrueY: @NYJetsTD: Hidd el, nem örülök ennek annyira. :) Sajnos csak 1 napot nyaraltam. A többit kórházban... (2016.10.12. 23:00) [Adáshiba] Achilles-ín
  • NYJetsTD: Ronaldoooooo.... milyen ügyes vagy. Mostantól egész életedben mondhatod, hogy sportsérülésed volt,... (2016.10.11. 21:01) [Adáshiba] Achilles-ín
  • TrueY: @NYJetsTD: Én a vereshagymás-zsíros kenyeret szeretem. Legutóbb Mikulás-futáskor ettem. De mostaná... (2016.03.21. 01:33) [Adáshiba] Futás...
  • Utolsó 20

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] Negált regex perl-ben

2012.02.16. 11:00 | TrueY | Szólj hozzá!

Címkék: linux 2011 hájtek cygwin

Sokszor előforduló probléma, hogy olyan sorokat kell egy file-ban keresnünk, amely sorok egy adott karakter sorozatot NEM tartalmaznak. Bash-ban erre használhatjuk a "grep -v" parancsot. Tipikusan rossz használata a "grep ...| grep ... | grep -v ...|awk..." kelgyó! Kérem, hogy ezt egyetlen awk-ban oldjuk már meg!

Perl-ben használhatjuk a '!~' a nem illeszkedési feltételre, vagy az unless, ha az 'if'-fet akarjuk negálni. Előfordul viszont, hogy egy web-es felületen csak a regular expression-t tudjuk megadni és nincs lehetőségünk az if-fet, vagy a használt operátort módosítani.

Erre kellett megoldást találnom, hogy magában a reg.ex.-ben megadni a "nem illeszkedési" feltételt. A legjobb, amit találtam 3 perc guglizás után ("how to match a string which does not contain a given string in perl regexp") a következő:

/^(?:[^f]+|f(?!oo))*$/; # Matches strings not containing 'foo'.
/^(?:.(?!FOO).)*$/; # Matches strings not containing FOO

Nálam működik. "A zero-width negative look-ahead assertion"- használ. A második megnézni minden karakterre, hogy vajon a keresett string után jön-e a FOO karakter sorozat. Ha talál ilyet, akkor nem match-el. De átírható negative look-behind-re is, csak akkor a '.' elé kell tenni. Az első a gyorsabb verzió, de csak akkor igazán használható, ha az első karakter ritkán fordul elő.
echo -e "al -al al\nal al al"| \
perl -pne 'print "x" if /^(?:(?!-al).)*$/'
al -al al
xal al al
Akkor is működik, ha a  a kereset karakter sorozat a legelején áll.

Egyezzünk minden nap!

 

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/3389821

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.

Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal

süti beállítások módosítása