我正在尝试在文件中找到多个匹配项。我使用以下代码:
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('\\','')
但它不会返回任何结果。
另一方面,当我在变量中传递整个文本时,它确实找到了模式。 有人可以帮助我吗?
P.S。文件中的部分文字:
for(;;); {“_ _ ar”:1,“payload”:null,“domops”:[[“replace”,“#detailedsearch_more_pager”,f alse,{“__ html”:“\ u003Cdiv> \ u003Cdiv class = \“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 \\
答案 0 :(得分: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 =