2012-08-10 96 views
2

我覺得有點愚蠢,但我已經做了一些正則表達式來查找HTML文檔中的特定業務,地址和URL。問題是......我不知道我應該使用哪個(python)正則表達式。當我使用re.findall時,我得到30到90個結果。我想限制爲3或5(一組數字)。我應該使用哪種正則表達式來執行此操作,還是有一個參數可以在搜索達到一定數量的結果時停止搜索?Python正則表達式 - 限制結果?

此外,有沒有更快的方式來搜索一個HTML文檔,以便我的程序不會因正則表達式搜索這個非常長的「字符串」文本而變慢?

謝謝。

編輯

我有美麗的湯,我已經用它來只會讓事情更容易閱讀...但不進行解析。

我也用過lxml ......哪個更好/更快?

+3

我的壞張貼一個答案,你[不應與解析HTML正則表達式(http://stackoverflow.com/a/1732454/1219006),使用解析器 – jamylak 2012-08-10 13:14:44

+0

那麼如何正確理解你閱讀整個html頁面?如何獲取html頁面並用regexp逐行閱讀?糾正我,如果我錯了,我可以描述如何用正則表達式解析頁面,如果你需要。 – 2012-08-10 13:26:56

回答

1

而不是使用re.findall,請使用re.finditer。它返回一個迭代器,根據需要產生下一個匹配。

下面是一個例子:

>>> [m.group(0) for m, _ in zip(re.finditer(r"\w", "abcdef"), range(3))] 
['a', 'b', 'c']