Regularni vyrazy

Vladimír Fux fux na infoline.cz
Neděle Srpen 20 13:16:40 MEST 2000


- Ing. Marian Dadaj pise:
- Podla tvojej specifikacie by malo toto stacit :
-
- $text=~s/(adresa).*\W(\w+\.html)\Z/\1=$url\2/gi;

No on je problem trochu slozitejsi. retezec v promenne
adresa totiz muze koncit libovolne muze jit o internetove.
adresy:

stranka.html
/nekde/stranka.html
/nekde/neco/seznam.php3?hledane=slovo&vypsat=10

Takze pro mne je rozhodujici upravit ty retezce,
kde za frazi "adresa=" nenasleduje obsah promenne
$url.

viz dale....

Vladimir



> Chtel bych na jeden pruchod - tedy jednim prikazem
> nahradit ci spise pozmenit frazi podle prikladu:
>
> V promenne $url mam "http://www.novak.cz/"
> V textu se mohou vyskytovat takoveto fraze:
> A)   "adresa=http://www.novak.cz/neco.html"
> B)   "adresa=neco.html"
>
> Jak zajistit, aby v pripade B. to znamena,
> pokud za textem adresa nenasleduje obsah
> promenne $url se tam tento obsah doplnil,
> tedy aby doslo doslo k uprave textu na tvar
> "adresa=http://www.novak.cz/neco.html"
> resp. "adresa=".$url."neco.html"
>
> Myslel jsem si, ze to pujde takto:
> .
> $text=~s/(adresa=)(^[($url.*)])/\1$url\2/gi;
> .
> ale to je asi pitomost.
>
> Jedine co mne napada je doplnit to tam vzdy,  a na
> druhy pruchod nahradit dvoji vyskyt  vyskytem jednim.
> .
> $text=~s/(adresa=)/\1$url/gi;
> $text=~s/$url$url/$url/g;
> .
> Ale to mi pripada jako desna prasecina.
>
> Prijde nekdo na reseni s jednim pruchodem?
>
> Diky Vladimir





Další informace o konferenci Perl