Portál AbcLinuxu, 26. dubna 2024 10:22


Dotaz: regExp: radky, ktere nezacinaji stringem, ale obsahuji jej

27.8.2004 10:15 Tom
regExp: radky, ktere nezacinaji stringem, ale obsahuji jej
Přečteno: 99×
Odpovědět | Admin
Zdravim,

nevi prosim nekdo jak napsat regularni vyraz:

najdi vsechny radky, ktere nezacinaji radek stringem "table", ale obsahuji jej

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

Odpovědi

27.8.2004 10:21 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro sed by melo fungovat /.\{1,\}table/, pro perl je to jednodussi: /.+table/
27.8.2004 10:24 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Jo tohle predpoklada, ze kdyz to tim table zacina, nejsou prednim zadny whitespaces. Jinak misto . dosad pro perl \S na zacatek regexpu.
27.8.2004 10:29 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Este pro grep: '^[^ \t].*table'
27.8.2004 10:34 Tomas
Rozbalit Rozbalit vše Re: regExp
Dekuji moc, ale v GREPU mi to vyhazuje i radky ktere nic neobsahuji...

Tomas.
27.8.2004 10:38 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Jako prazdny radky nebo radky ktere neobsahuji table? To je divny, ten vyraz by mel rikat 'radka zacina znakem co neni mezera nebo tab, pak je cokoliv a pak table'.
27.8.2004 10:46 Tomas
Rozbalit Rozbalit vše Re: regExp
Vse je o.k. Omlouvam se.
27.8.2004 10:58 Tomas.
Rozbalit Rozbalit vše Re: regExp
Kecam, vraci mi to i radky ktere zacinaji mezerou nebo tabem a pak maji table, to jsem zapomnel uvest do specifikace. myslel jsem to tak , ze pokud jsou pred "table" jakekoliv znaky krome neviditelnych znaku(mezera, tab).

Tomas.
27.8.2004 11:07 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Jestli jsem to teda dobre pochopil, ty chces, aby ti to vypsalo radky ktery splnuji:

1) Musi obsahovat table
2) table nesmi byt prvnim slovem

V tom pripade me to funguje jak ma. Co mas za grep? Ja mam GNU grep 2.5
27.8.2004 11:10 Tomas
Rozbalit Rozbalit vše Re: regExp
Presne tak, ale jeste s jednim dodatkem. Pokud pred tablem budou pouze neviditelne znaky(mineno mezery nebo taby), tak v tom pripade to beru jako kdyby radek tablem zacinal....

Tomas
27.8.2004 11:14 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Tak jsem to pochopil (viz 2. bod). Pokud je pred table jen whitespace, pak je table prvni slovo. Uvedu priklad, kdyz grepu predhodim soubor
table tennis
wooden table
        table after tab
  table after space
another table
tak to vyhodi radky
wooden table
another table
tak jak ma
27.8.2004 11:19 Tomas
Rozbalit Rozbalit vše Re: regExp
Presne tak. Omlouvam se za spatnou uvodni specifikaci.

Tomas.
27.8.2004 11:35 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: regExp
Ale neprijme to ani " wooden table" (mezera na zacatku), coz podle zadani prijmout ma (pred table nejsou jen mezery).
27.8.2004 11:45 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: regExp
Pravda, takze finalni (snad) regexp je tohle: '\w.*table'
27.8.2004 12:56 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: regExp
table table ;)
27.8.2004 13:33 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: regExp
Jo, ten mi taky dal zabrat ;-)
27.8.2004 11:28 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: regExp
grep table | grep -v '^[[:blank:]]*table'
jak to nejak slusne zapsat do jednoho vyrazu (aby to vyhodilo i "table table") nevim.
27.8.2004 12:53 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: regExp
S PCRE by to byla hračka, co? S normálními regulárními výrazy jsem vymyslel tohle:

grep -E '^[[:blank:]]*([^t[:blank:]]|t[^a]|ta[^b]|tab[^l]|tabl[^e]).*table'

Já mám samozřejmě grep 2.5, který PRCE už umí...
27.8.2004 13:25 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: regExp
Tak to mě nenapadlo (PCRE), ale jde to pěkně.

(Hádanka na páteční odpoledne: grep -P vypíše conflicting matchers specified, ale echo $GREP_OPTIONS nevipíše nic -- v čem je problém?

.

.

.

.

.

echo -E ;))
27.8.2004 10:46 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: regExp
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pochopil-li jsem správně zadání, tak
^..*table
(nebo ^.+table resp. ^.\+table)

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.