Регулярное выражение для извлечения Script Теги

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

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

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

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

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

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

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

\</script\>

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

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

Ответ 2

Это регулярное выражение делает трюк просто прекрасным:

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

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

У вас возникнет проблема с помощью этого простого HTML:

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

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