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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: regexp для матчинга html тега script  (Прочитано 1141 раз)

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

Оффлайн boonya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
    • Простые решения, заметки зеленого программиста
regexp для матчинга html тега script
« : 16 Июля 2013, 11:20:29 »
Уважаемые знатоки, здравствуйте!
Такая вот история... Вчера целый день пытался навоять регулярку, которая будет матчить в многострочном режиме все html теги <script ...>...</script>, но <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid="></script> и <script type="text/javascript">
  addthis.layers({
    'theme' : 'transparent',
    'share' : {
      'position' : 'left',
      'numPreferredServices' : 5
    }, 
    'whatsnext' : {}, 
    'recommended' : {
      'title': 'Recommended for you:'
    }
  });
</script>
она матчить не должна. Причем первый и второй вариант могут быть одновременно.
Видимо ресурсов моего мозга недостаточно, чтобы замутить такую вещь.

Очень надеюсь на то, что ваши светлые умы выручат меня в этой нелегкой ситуации.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: regexp для матчинга html тега script
« Ответ #1 : 17 Июля 2013, 01:01:22 »
матчить в многострочном режиме все html теги <script ...>...</script>
Код: (bash) [Выделить]
grep -Pzo "(?s)<script [^>]*>(?:(?!(<script [^>]*>|</script>)).)*</script>" file.htmlДальше лень писать.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: regexp для матчинга html тега script
« Ответ #2 : 17 Июля 2013, 05:14:44 »
конечно лень, regexp'ы не предназначены для разбора html, для этого есть специальные парсеры

Оффлайн boonya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
    • Простые решения, заметки зеленого программиста
Re: regexp для матчинга html тега script
« Ответ #3 : 17 Июля 2013, 11:33:23 »
regexp'ы не предназначены для разбора html
Они предназначены для разбора строк, а html - ни что иное как набор строк.

для этого есть специальные парсеры
... которые основаны (в основном) на regexp`ах ;)

Пользователь решил продолжить мысль 17 Июля 2013, 11:37:20:
Код: (bash) [Выделить]
grep -Pzo "(?s)<script [^>]*>(?:(?!(<script [^>]*>|</script>)).)*</script>" file.htmlДальше лень писать.
Я, видимо, забыл указать, что регулярку для первого варианта я написал. А вот адаптировать её под вторые два - проблема.
« Последнее редактирование: 17 Июля 2013, 11:37:20 от boonya »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: regexp для матчинга html тега script
« Ответ #4 : 22 Июля 2013, 09:11:02 »
Ага, давай, рассказывай как космические корабли бороздят большой театр

HTML то текст, но ты же в курсе про грамматики и пределы возможностей regexp'ов, да? =)

И, пардоньте, но статистику в студию: какой парсер html основан на regexp'ах хотябы один пример. твой grep не считаем.

 

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