1

我正在尝试在文件中查找多个匹配项。我使用以下代码:

f = open('/home/evi.nastou/Documenten/filename')
text = f.read()
#print text
urls = re.findall(r"_8o _8r lfloat\" href=\"(.+?)\" onclick=", text)
for url in urls:
    print url.replace('\\','')

但它不返回任何结果。

另一方面,当我在变量中传递整个文本时,它确实找到了模式。有人可以帮帮我吗?

ps 文件中的部分文本:

for (;;);{"__ar":1,"payload":null,"domops":[["replace","#detailedsearch_more_pager",f‌​alse,{"__html":"\u003Cdiv>\u003Cdiv 类=\"mbm detailedsearch_result\">\u003Cdiv class=\"clearfix\">\u003Ca class=\"_8o _8r lfloat\" href=\"http://www.facebook.com/name\" onclick=\" if (event.button == 0) { search_logged_ajax({"ab":"T_TA_RANKING_1","cururl&‌​quot;:"http:\/\/www.facebook.com\\

4

1 回答 1

1

问题似乎是你的正则表达式。

使用这个:

r'href\s*=\s*(.+)\s+onclick\s*='

代码:

import re
text = open('test.txt').read() # contains your string

urls = re.findall(r'href\s*=\s*(.+?)\s+onclick\s*=', text)
for url in urls:
    print url.replace('\\','')

输出:

"http://www.facebook.com/name"

我的正则表达式的解释:

href    # match href
\s*     # match 0 or more spaces
=       # match =
\s*     # match 0 or more spaces
(.+?)   # match any character (non - greedy)
\s+     # match 1 or more spaces
onclick # match onclick
\s*     # match 0 or more spaces
=       # match =
于 2013-04-04T11:38:06.193 回答