Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Многострочное регулярное выражение  (Прочитано 621 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Laurentius

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Доброго дня.

Пробую выцепить текст из тегов
<div class="Stil35">

eine Familie

</div></td><td>

Вопросов собственно два: как захватить текст с помощью регулярки (можно с тегами) и в чем это лучше делать.
Пробую в Geany ищу что-то типа stil35.*?>(.+?)\s*</

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Многострочное регулярное выражение
« Ответ #1 : 27 Мая 2016, 20:51:06 »

grep -Po '<div class="Stil35">.*?</div>' | sed 's/<[^>]*>//g'
sed -rn 's/.*<div class="Stil35">(.*)<\/div>.*/\1/p'

Оффлайн Laurentius

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Многострочное регулярное выражение
« Ответ #2 : 27 Мая 2016, 21:52:44 »
Ага. Грепнулось =) Спасибо. Буду курить мануал по грепу.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Многострочное регулярное выражение
« Ответ #3 : 27 Мая 2016, 23:14:40 »
grep -ozP '<div class="Stil35">[[:space:]]*\K[^<\x0a]+'
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Многострочное регулярное выражение
« Ответ #4 : 28 Мая 2016, 00:04:56 »
Azure,
А если строк текста больше одной?

Laurentius,
Это было для одной строки, вот для множества:
sed -rnz 's/.*<div class="Stil35">(.*)<\/div><\/td><td>.*/\1/p'
В (.*) будет жадно выбрано все до последнего </div></td><td> если такая группа тэгов не единственная.
« Последнее редактирование: 28 Мая 2016, 00:12:24 от Cxms »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Многострочное регулярное выражение
« Ответ #5 : 28 Мая 2016, 00:28:44 »
А если строк текста больше одной?
grep -ozP '<div class="Stil35">[[:space:]]*\K[^<]+?(?=[[:space:]]*</div>)'
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.