2011-06-01 93 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