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