Как в строке оставить только алфавитно-цифровые символы?
$test =~s/([\w+])//g; получаю метасимволы как теперь удалить из строки ?
>Как в строке оставить только алфавитно-цифровые символы?
>$test =~s/([\w+])//g; получаю метасимволы как теперь удалить из строки ?s/([\w+])//g == "убрать все алфавитно-цифровые символы и плюсы"
может быть, поступить просто так: s/\W//g
или даже так: s/\W+//g ?
>>Как в строке оставить только алфавитно-цифровые символы?
>>$test =~s/([\w+])//g; получаю метасимволы как теперь удалить из строки ?
>
>s/([\w+])//g == "убрать все алфавитно-цифровые символы и плюсы"
>
>может быть, поступить просто так: s/\W//g
>
>или даже так: s/\W+//g ?
мне надо сделать с точности до наоборот оставить только алфавитно-цифровые
>мне надо сделать с точности до наоборот оставить только алфавитно-цифровые% perl -e '$test="qW%|eR_34 aS+DF5"; $test =~ s/\W+//g; print "$test\n";'
qWeR_34aSDF5
%По-моему, именно это и происходит. В переменной $test, остаются только буквы, цифры и подчеркивания. Или я не правильно понял вопрос.
>>мне надо сделать с точности до наоборот оставить только алфавитно-цифровые
>
>% perl -e '$test="qW%|eR_34 aS+DF5"; $test =~ s/\W+//g; print "$test\n";'
>qWeR_34aSDF5
>%
>
>По-моему, именно это и происходит. В переменной $test, остаются только буквы, цифры
>и подчеркивания. Или я не правильно понял вопрос.Получилось только вот как быть с русскими буквами. Они тоже удаляются.
use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE, "ru_RU.UTF8");
>Получилось только вот как быть с русскими буквами. Они тоже удаляются.
>use locale;
>use POSIX qw(locale_h);
>setlocale(LC_CTYPE, "ru_RU.UTF8");Valik! В самом деле! Изучай регулярные выражения, и сразу же вопросов станет меньше. Да, времени потратишь немало, но это окупится с лихвой.
man perlre
man perlrequick
man perlretutа также ворох книг и статей, посвященных regexp'ам.
s/[^0-9A-Za-z_]+//g - так, наверное?
tr работает гараздо быстрее, чем s