Reg exp

Honza Pazdziora adelton na informatics.muni.cz
Středa Únor 7 13:28:17 MET 2001


On Wed, Feb 07, 2001 at 12:22:14PM +0100, DADAJ Marián wrote:
> potreboval by som za behu programu menit "pravy' regularny vyraz pri
> pouzitei prikazu s.
> vyzera to nasledovne :
> 
> $data="   abc   123";
> $co="(\s+)(\w+){\s+)(\w+)";
> $cim="\2\1\3";
> 
> 1: s/$co/$cim/gi; #Toto mi vsak nefunguje na rozdiel od
> 2: s/$co/\2\1\3/gi; #co reaguje korektne.
> 
> Ako mam napisat reg exp pre $cim, alebo ako smenit pravu stranu s///,
> aby som dosiahol korekny (kroy ocakavam)vysledok?
> 
> vysledok 2 : "abc   123" --toto chcem
> vysledok 1 : "\2\1\3"

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

$ perl
$data="   abc   123";
$co="(\s+)(\w+)(\s+)(\w+)";
$cim="\2\1\3";
$data =~ s/$co/$cim/gi;
print "[$data]\n";
__END__
[   abc   123]

vzhledem k tomu, ze backslash ma mezi uvozovkami dosti specialni
vyznam.

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Petition for a Software Patent Free Europe http://petition.eurolinux.org
------------------------------------------------------------------------


Další informace o konferenci Perl