Reg exp
Honza Pazdziora
adelton na fi.muni.cz
Středa Únor 7 17:14:34 MET 2001
On Wed, 7 Feb 2001 14:43:05 +0000 (UTC), Pavel Kolesnikov <k na les.cz> wrote:
>
> > Prosim, zpuste poslat, co presne mate. To, co jste poslal, nejde ani
> > spustit (/(s+)(w+){s+)(w+)/: unmatched () in regexp). Pokud tu zavorku
> > opravim, tak \2\1\3 nedostanete, protoze
>
> Prijde mi, ze autor se nechal ovlivnit sedem nebo tak necim a namisto
> \2\1\3 mel na mysli $2$1$3.
Ano. Ja jsem mel hlavne snahu ho nasmerovat k tomu, ze pokud nejdriv
presne nepopise, co chce a co ma a co to, co ma, aktualne dela, tak ze
se nedobere k vysledku, ktery by daval snadno smysl. Proste jeho
priklad ani nesel spustit, a navic nebyla pravda (diky pouziti "\1"
v uvozovkach, coz je to same co "\001", tedy hexa znak 1), ze na
vystupu dostane vytisteno sest znaku, z toho tri lomitka; dostal by
tri binarni znaky. Cili tam byl rozpor uz v popisu problemu.
Kazdopadne reseni je napriklad
$data = " abc 123";
$co = q!(\s+)(\w+)(\s+)(\w+)!;
$cim = '"$2$1$4"';
$data =~ s/$co/$cim/eegi;
print "[$data]\n";
__END__
s tim, ze pokud pozadavek znel na vystup [abc 123], tak tam musi
byt $4, nikoli $3, protoze $3 odpovida te casti (\s+).
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, DBI, Oracle, MySQL, auth. WWW servers, DBD::XBase.
Petition for a Software Patent Free Europe http://petition.eurolinux.org
------------------------------------------------------------------------
Další informace o konferenci Perl