Мне нужно удалить теги Java Script с помощью регулярных выражений и JRegex - PullRequest
1 голос
/ 15 июня 2010

Мне нужно удалить все теги Java Script, а также содержимое между ними и теги стиля из HTML-кода веб-страниц. До сих пор я придумал это выражение:

"(<[ \r\n\t]*script([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*script[ \r\n\t]*>)|(<[ \r\n\t]*noscript([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*noscript[ \r\n\t]*>)|(<[ \r\n\t]*style([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*style[ \r\n\t]*>)"

Я используюБиблиотека JRegex для работы с регулярными выражениями.Когда я тестирую его в любом тестере регулярных выражений, он работает просто отлично, но как только я запускаю свою программу - все вылетает с сообщением об ошибке:

Exception in thread "Thread-0" java.lang.StackOverflowError
    at java.util.regex.Pattern$BranchConn.match(Unknown Source)
    at java.util.regex.Pattern$BmpCharProperty.match(Unknown Source)
    at java.util.regex.Pattern$Branch.match(Unknown Source)
    at java.util.regex.Pattern$GroupHead.match(Unknown Source)
    at java.util.regex.Pattern$LazyLoop.match(Unknown Source)
    at java.util.regex.Pattern$GroupTail.match(Unknown Source)
    at java.util.regex.Pattern$BranchConn.match(Unknown Source)
    at java.util.regex.Pattern$CharProperty.match(Unknown Source)
    at java.util.regex.Pattern$Branch.match(Unknown Source)
    at java.util.regex.Pattern$GroupHead.match(Unknown Source)
    at java.util.regex.Pattern$LazyLoop.match(Unknown Source)
..................................

И это продолжается вечно.Если кто-нибудь может дать мне совет по этому вопросу - я буду очень благодарен.

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Почему бы не использовать анализатор HTML и просто удалить узлы <script> и <style>?

0 голосов
/ 27 апреля 2011

Я могу решить эту проблему. Я использую регулярное выражение для удаления тегов сценария и содержимого между тегами сценария, используя это регулярное выражение:

@"<(script|SCRIPT)[^+]*?>[^>]*?<(/\script|SCRIPT)>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...