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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составить регулярное выражение, Убрать все html-теги из текста 
:(
    Опции темы
ama_kid
Дата 19.11.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Добрый день всем:
Есть набор строк следующего вида (переносы строк я вставил, чтобы не рвать разметку, на самом деле тут просто две строки):
Код
Слово1(2 пробела)<div><t>Слово2</t></div><div style="margin-left: 1em;"><font color='red'>
<i>Слово3</i></font>; <font color='green'>
<i>Слово4</i></font></div><div style="margin-left: 1em;">Слово5</div>

Два слова(2 пробела)<div style="margin-left: 1em;"><font color='green'><i>Слово2</i></font>; 
<font color='green'><i>Слово3</i></font></div><div style="margin-left: 1em;">Выражение 2</div>
<div style="margin-left: 1em;"><b>Слово4</b></div><div style="margin-left: 1em;">
<r>Слово5</r>, <r>Слово6</r></div>

Из всего этого дела надо получить строки вида:
Код
Слово1(2 пробела)(Tab)Слово2(Tab)Слово3 Слово4 Слово5
Два слова(2 пробела)(Tab)Слово2 Слово3 Выражение 2 Слово4 Слово5 Слово6

Т.е. после первых (2 пробела) необходим символ табуляции, а если затем стоит выражение в теге <t> - то после него тоже (такой тег может быть в строке только один раз вторым пунктом). Остальной текст просто отделяется пробелами друг от друга. Ну и соответственно убрать все теги. Это возможно с помощью регулярок? Если возможно - то желательно безотносительно Perl'а, интересует сам Expression.


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
alezzz
Дата 27.11.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



В таком виде подойдет? 

Код

while (<>)
{
  s/<\/t>/\t/g;
  s/</\t</;
  s/(<.*?>\s*)+/ /g;
  print "$_\n";
}


По регулярным:
1-ый:  немного не понял задание, исходя из примера ставлю табуляции после </t>.
2-ой:  табуляция после (2-х пробелов), точнее схитрил: перед первым тегом, если как по примеру, то работать будет, а если строка начинается с тега, то тогда не получится.
3-ий:  собственно замена последовательности тегов (1 и более) на пробел. Если строка заканчивается тегом, то удаляется символ конца строки, поэтому принт с \n, если между тегами исключены пробелы (как в примере), то \s* можно выкинуть.

И еще непонятно: что делать с ";" и ",":
Цитата

</font><font color='green'>
...
<r>Слово5</r>, <r>Слово6</r>

их удалять? т.к. они остаются после удаления тегов.



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


 




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


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

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