vyhazeni znaku
Frantisek Darena
darena na akela.mendelu.cz
Pondělí Červen 2 07:45:19 MEST 2003
nebo je taky mozny napsat
print 'chyba' if $test =~ /[^\d+]/;
to [^ ] znamena jakykoliv jiny znak nez je uvedeno uvnitr [].
do ty negovany tridy znaku (aji do normalni tridy znaku) je moznyty znaky
vkladat.
$znaky = '\d+';
print 'chyba' if $test =~ /[^$znaky]/;
takze je mozny do nejaky promenny si nastrkat ty nepovoleny znaky a pak je
to toho regularniho vyrazu vlozit. specialnimi znaky jsou ']' a '-' jinde
nez na zacatku nebo na konci tridy znaku. zvlastni vyznam ma i znak
pouzity pro ohraniceni vzoru. pred tyto znaky je tedy dobre dat obracene
lomitko.
On Mon, 2 Jun 2003, Petr Vileta wrote:
> Nejak nemuzu porad prijit na elegantni zpusob, jak ze stringu vyhazet
> nepripustne znaky. Zajimalo by me, jestli existuje nejaky obecny zpusob, jak
> to udelat a pri tom abych si mohl mnozinu nepripustnych znaku definovat sam.
> Napriklad pro telefonni cislo si poradim takto:
> $tel='+420 123 456 789';
> $tel=~s/\s//g;
> $test=$tel; $test=~s/[\d\+]//g;
> print 'chyba' if(length($test) > 0);
>
> Takze v tomto pripade lze definovat nepripustne znaky jako cokoliv, co neni
> cislice nebo '+'.
> Jenze budu chtit napriklad ze stringu vyhazet pouze nasledujici znaky '#$@'
> a cokoliv jineho ponechat.
> Prosel jsem par prirucek, prikladu, googloval jsem, ale nic obecne
> pouzitelneho jsem nenasel.
> Ma nekdo nejaky napad nebo link nekam (krome /dev/null/ :-) ) ?
> --
> Petr
>
>
Další informace o konferenci Perl