2011-06-01 73 views
1

我有一個正則表達式將html轉換爲txt。 但它佔用了大量的CPU使用量。 我如何優化它?優化正則表達式

((\n|\r){2,}) | (\r|\n)|<head.*?</head>|<script.*?</script> |<meta[^>]+>|<style.*?</style> | <[^>]*> |&[^\s]*; 
+7

使用解析器而不是正則表達式。 – 2011-06-01 14:08:53

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags :) – MByD 2011-06-01 14:10:24

+0

我認爲CPU解析器會增加更多CPU嗎? – 2011-06-01 14:10:54

回答

1

如果可以,請使用HTML解析器。正則表達式由於各種原因對HTML不利,並且性能也將不可避免地受到影響。

+0

解析器中的錯誤恢復是一個挑戰,只有當它不是**通用開放式HTML,而是定義明確的HTML片段時,才能正常工作。即使如此,使用[語法正則表達式](http://stackoverflow.com/questions/4840988/the-recognizing-power-of-modern-regexes/4843579#4843579),而不是緊湊的。**非常好的正則表達式方法* *本身強烈類似於實際的詞法分析器,例如[這個答案](http://stackoverflow.com/questions/4231382/regular-expression-pattern-not-matching-anywhere-in-string/4234491#4234491)如果可能,d堅持現有的解析模塊 – tchrist 2011-06-09 17:02:29

+0

@Francies Glibert。 我無法找到可以解析格式不正確的html的解析器。 我看到一個正在進行的討論SL,但告訴pase html首先整齊。而不是libxml。 這對我來說會更耗資源。 因爲我不關心有效的html。我只需要提取文本部分。 – 2011-06-10 07:49:08