2013-12-18 116 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