Регулярное выражение для извлечения тегов скрипта - PullRequest
6 голосов
/ 13 января 2011

Я пытаюсь написать регулярное выражение в C #, чтобы удалить все теги сценария и все, что в них содержится.

До сих пор я придумал следующее: \<([^:]*?:)?script\>[^(\</<([^:]*?:)?script\>)]*?\</script\>, но это не работает.

Я разобью это и объясню свое мышление в каждом разделе:

\<([^:]*?:)?script\>

Здесь я пытаюсь заявить, что он должен получить любой элемент скрипта, даже если ему предшествует пространство имен, скажем, <a:script></a:script>. Я также добавил это к закрывающему тегу.

[^(\</<([^:]*?:)?script\>)]*?

Здесь я пытаюсь заявить, что в тегах должно содержаться все, кроме </a:script>, </script> и т. Д.

\</script\>

Здесь я заявляю, что он должен иметь закрывающий тег.

Может кто-нибудь определить, где я иду не так?

Ответы [ 2 ]

16 голосов
/ 13 января 2011

Это регулярное выражение отлично справляется с задачей:

\<(?:[^:]+:)?script\>.*?\<\/(?:[^:]+:)?script\>

Но не делайте этого, пожалуйста

Вы столкнетесь с проблемой при помощи этого простого HTML:

<script>
var s = "<script></script>";
</script>

Как вы собираетесь решить эту проблему?Для таких вещей разумнее использовать HTML Agility Pack .

12 голосов
/ 13 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...