模式匹配在文件中

时间:2013-04-04 11:20:23

标签: python full-text-search

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

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 \\

1 个答案:

答案 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 =