Ruby регулярное выражение, которое соответствует всем тегам, кроме тега script - PullRequest
0 голосов
/ 02 мая 2019

Например, у меня есть строка:

content = "<h1>test</h1>\n<script>$(function(){alert('test')});</script>\n<b>bold</b>"

content.scan(/>.*?</m) # should not get the script tag content

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Я не уверен, поддерживает ли Ruby PCRE, поэтому вы можете использовать глаголы регулярных выражений, например:

<\/?script>(*SKIP)(*FAIL)|<\/?\w+>

Regex demo

В случае, если вы не можете использовать глаголы (пропустить и потерпеть неудачу), вы можете использовать технику сброса следующим образом:

<\/?script>|(<\/?\w+>)

А затем получить доступ к группе захвата и получить содержимое совпадающего тега

0 голосов
/ 02 мая 2019

Использование отрицательный взгляд :

"<h1>test</h1>\n<script>$(function(){alert('test')});</script>\n<b>bold</b>".
  scan(/>[^<]*?<(?!\/script>)/)
#⇒ [">test<", ">\n<", ">\n<", ">bold<"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...