Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удалить из текста определенные символы (Perl)

16K
24 февраля 2008 года
lxx
24 / / 27.02.2007
Здравствуйте.
Извините, если мой вопрос вам покажется глупым, но я только начинаю работать в Perl.
Мне нужно из текста (который хранится в переменной $text) удалить следующие символы: ),(,",',«,»
Код указанный ниже почему-то ничего не удаляет:
 
Код:
$text =~ s/[\)\(\"\'\«\»]/""/;
Подскажите, в чем проблема и как ее решить?
92
24 февраля 2008 года
Тень Пса
2.2K / / 19.10.2006
 
Код:
$text =~ s/[\)\(\"\'\«\»]//g;


еще возможно не нужно некоторые символы экранировать, например кавычки треугольные ) но я не уверен. всё легко проверить :)
16K
24 февраля 2008 года
lxx
24 / / 27.02.2007
Спасибо!
Теперь появился новый вопрос. После обработки текста данным кодом многие кириллические символы заменяются знаками вопроса.
Почему это происходит, и лечится ли это? Текст в utf8.
2
24 февраля 2008 года
squirL
5.6K / / 13.08.2003
мало информации об окружении. у меня, например, такого не происходит ;)
16K
25 февраля 2008 года
lxx
24 / / 27.02.2007
Цитата: squirL
мало информации об окружении.

ОС - Mandriva Linux, Perl 5.8.8, вывод комманды locale:

Код:
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

Обрабатываемый текст и скрипт в utf8.
При выводе текста без удаления символов вышеупомянутым кодом такого не происходит.
2
25 февраля 2008 года
squirL
5.6K / / 13.08.2003
хм... приведите полностью содержимое скрипта!
16K
25 февраля 2008 года
lxx
24 / / 27.02.2007
 
Код:
@words=();
$in_file = "./in.txt";
open(BASE,$in_file) || die "нет входного файла";
while(<BASE>)
{
    $_  =~ s/[\)\(\"\'\«\»]//g;
    @tmp = split(" ");
    push(@words, @tmp);
}
print @words;
16K
25 февраля 2008 года
lxx
24 / / 27.02.2007
Источником проблемы оказались символы «». После их удаления из регулярного выражения буквы перестали заменяться вопросами.
Но как же тогда удалить 2 вышеупомянутых символа?
92
25 февраля 2008 года
Тень Пса
2.2K / / 19.10.2006
наверное посмотреть их hex/oct коды и по ним удалять... честно признаюсь, не делал такого :) может я ошибаюсь.
16K
28 февраля 2008 года
lxx
24 / / 27.02.2007
Да, так и сделал
 
Код:
$_ =~ s/[\xC2AB\xC2BB\)\(\"\']//g
Огромное спасибо за подсказку!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог