[linux] Re: regexp - pochopil som ho? - VZOR centrum.sk

Lubomir Host rajo na platon.sk
Pátek Prosinec 3 12:02:57 CET 2004


On Fri, Dec 03, 2004 at 10:59:20AM +0100, Matus UHLAR - fantomas wrote:
> On 02.12 15:01, Juraj Variny wrote:
> > Existuje free utilita "Visual regexp" (a urcite nie len jedna) ktora by ti 
> > mohla dost pomoct, pohladaj. 
> > 
> > Co sa este ineho okrem regexpov pouziva, to su "shell expressions/shell 
> > patterns" na mena suborov (ako napriklad *.txt) .
> 
> glob(7), pripadne apropos glob ;)
> 
> > Az ma zamrazilo ked som si predstavil ze by kazdy program mal nejaky
> > uplne iny zapis tychto vyrazov... brrr...
> 
> no, ked to tak vezmeme tak mame uz 3 typy regularnych vyrazov (standardne,
> rozsirene a prelovske) plus globbing, takze to nie je tiez idealne.
> 
> Ale mozeme pvoedat ze pre mena suborov je vhodnejsi globbing a pre pracu s
> retazcami regularne vyrazy...

No, ked pracujes s MySQL (a mozno to plati aj pre ine *SQL), tak tam mas
okrem funkcie REGEXP akceptujucej rozsirene reg. vyrazy este aj
porovnanie pomocou LIKE. V LIKE je regexpovske '.*' (nula lebo viacero
pismenok) nahradene znakom '%', jeden lubovolny znak (regexpovska bodka
'.') je zase nahradena znakom '_'. ;-)

Cele pouzivanie regexpov sa navyse komplikuje tym, ze ak chces pouzit
regularne vyrazy v sed/awk/grep a napisat takyto riadok do shellu, treba
to castokrat 'escapovat', tzn. pisat spravny pocet backslashov pred
niektore zo specialnych znakov, ale nie vzdy a nie pre vsetky. Myslim,
ze to este zalezi aj od pouziteho shellu a typu uvodzoviek: bud obyzajny
apostrof "'" alebo dvojite uvodzovky '"'.

Dalej taky textovy editor vim ma v zasade kompatibilne regexpy s takym
sedom, ale ma este jednu volby (:help magic), ktora ovplyvnuje
interpretaciu sekvecii '\.' '.' a pod. - zalezi od toho, ze ci treba
alebo netreba pisat backslash. Ale volbu 'magic'/'nomagic' som tusim
este nikdy nepouzil. Mozno by sa to dalo nakonfigurovat tak, aby
si vimovske regexpy mohol pouzit priamo napr. v Perle/PHP.

Takze ten zmatok je pre zaciatocnika uplne dokonaly. ;-)

Ja osobne som sa regexpy naucil asi tak, ze som si pustil textovy editor
vim, zapol si volby

:set incsearch
:set hlsearch

zobral kus textu, ktory som chcel nejako spracovavat regexpami
a postupne som v nom vyhladaval stale zlozitejsi a zlozitejsi regexp.
Vim vam vie pekne regexp vysvietit (podla toho, co sa prave zhoduje),
takze pri pisani ihned vidite, co ste napisali zle a teda kde je chyba.

A potom sa skusenostami clovek nauci prepisat vimovsky regexp pre
lubovolny iny interpret (sed/awk/grep/perl/php) a potom si moze povedat,
ze uz to zbezne ovlada. ;-)

Btw. awk (alebo gawk?) zvykne sem-tam varovat, ze si pouzil nejaky
backslash navyse, takze aj tam sa da dobre ucit.

rajo

-- 
Lubomir Host 'rajo' <rajo AT platon.sk>        ICQ #:  257322664
Platon Software Development Group              http://platon.sk/
http://www.gnu.org/philosophy/no-word-attachments.html




Další informace o konferenci linux