2013-12-18 92 views
-1

优化的正则表达式我用这个表达式:为HTML解析

.*[hH]([1-9])\\.\\s*(.*)\\s* 

用java与Matcher.find()方法。

在长文本这个正则表达式需要大量的时间来查找结果。

如何优化正则表达式?有人可以向我推荐一些优化的正则表达式?

+4

你能举出你想要匹配的例子吗? –

+1

如果您使用的是Matcher.find,那么为什么您需要领先的'。*'? –

+0

这里是一个例子:H1。 Lorem ipsum H2。 Lorem ipsum dolor sit amet Nullam non augue ornare,vehicles nulla ac,tempor mi。 Praesent在圣诞节的fringilla quis中累积了圣餐。 Suspendisse volutpat nunc id varius fringilla。 Quisque id tortor non ... – JBerta93

回答

2

您可以使用此:

[hH]([1-9])\\.\\s*+(\\S+) 

其中\\S是所有这不是一个白色字符(的\\s否定)

Possessive quantifiers*+用来禁止回溯。

正如Ian Roberts在他的评论中注意到的那样,领先的(.*)在这里似乎毫无用处。

0

您应该在之前测试长文本试图运行正则表达式。

String longText=... 
if(longText.matches(myRegex)) { 
    //Matcher.find 
} 

这样你就不会浪费你的时间。

但是,如果你真的面对longt文本,我可以建议你使用强大的html解析器Jsoup