Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить все слова, заканчивающиеся на... ...определённые буквы 
V
    Опции темы
yorc
Дата 26.12.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



всем привет!

собственно, сабж))
допустим, есть строка типа:

Код

what#ND to#ND watch#n#1 in#n#3 2010#ND social#a#2 tv#n#1


так вот, из неё нужно удалить все слова, которые заканчиваются на: #ND #NR #IT #NT #CL #MW

я с трудом продрался сквозь дебри какого-то мануала по regexp, чтобы не приходить с пустыми руками)) вот что у меня получилось:

Код

$text =~ s/(.*)(?:#ND|#NR|#IT|#NT|#CL|#MW)//ig;


но, увы... НИ-ЧЕ-ГО этот мой код не удаляет... уважаемые знатоки! для вас, наверное, эта задачка проще простого?.. подскажите, пожалуйста, в какую сторону смотреть?..

Это сообщение отредактировал(а) yorc - 26.12.2009, 23:42
PM MAIL   Вверх
shamber
Дата 26.12.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Цитата(yorc @  26.12.2009,  23:41 Найти цитируемый пост)
    
$text =~ s/(.*)(?:#ND|#NR|#IT|#NT|#CL|#MW)//ig;

а так
Код

$text =~ s/(\w+(?:#ND|#NR|#IT|#NT|#CL|#MW))\s//ig;


Это сообщение отредактировал(а) shamber - 27.12.2009, 00:01
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 27.12.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 1
Всего: 31



Код

$str =~ s/\S+#(?:ND|NR|IT|NT|CL|MW)//ig;



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
shamber
Дата 27.12.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



тьфу я тормоз smile про # не сообразил smile
PM MAIL Jabber   Вверх
yorc
Дата 27.12.2009, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



всем спасибо! попробовал вариант sir_nuf_nuf - работает, ура!..
PM MAIL   Вверх
yorc
Дата 27.12.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



ох, поторопился я! оказалось, что этот регексп пропускает такой вариант, когда слово СОСТОИТ только из, например, #ND

как переписать в таком случае? подскажите, пожалуйста!

и ещё, сразу же - в последующем мне понадобится удалить из всех слов все символы начиная с первого встретившегося знака #

как в этом случае лучше написать?
PM MAIL   Вверх
amg
Дата 27.12.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: нет
Всего: 50



Цитата(yorc @  27.12.2009,  11:54 Найти цитируемый пост)
оказалось, что этот регексп пропускает такой вариант, когда слово СОСТОИТ только из, например, #ND
Это исправить легко smile
$str =~ s/\S*#(?:N[DRT]|IT|CL|MW)\b//ig;

Цитата(yorc @  27.12.2009,  11:54 Найти цитируемый пост)
удалить из всех слов все символы начиная с первого встретившегося знака #
Это еще проще
$str =~ s/#\S*//g;

Но как обычно, встает вопрос, что считать словом. Для всех предложенных выше вариантов слово -- это последовательность непробельных символов.

PM MAIL   Вверх
yorc
Дата 30.12.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



amg - спасибо за помощь! всё работает прекрасно!..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.