2013-04-04 2 views
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('\\','') 

, но оно не приносит никаких результатов.

С другой стороны, когда я передаю весь текст в переменной, он находит шаблоны. Может кто-нибудь, пожалуйста, помогите мне?

p.s. Часть текста в файле:

для (;;); { "__ ар": 1, "полезная нагрузка": нулевой, "domops": [[ "заменить", "# detailedsearch_more_pager", е alse, {"__ html": "\ u003Cdiv> \ u003Cdiv class = \" mbm detailsearch_result \ "> \ u003Cdiv class = \" clearfix \ "> \ u003Ca class = \" _ 8o _8r lfloat \ "href = \" http://www.facebook.com/name \ "OnClick = \", если (event.button == 0) { search_logged_ajax ({ " AB ": " T_TA_RANKING_1 ", " cururl & Quot ;: " HTTP: \/\ /www.facebook.com \\

+1

вы можете предоставить некоторые части файла, который вы пытаетесь прочитать! – theAlse

+0

комментарий TheAlse + часть с вами, которая вас интересует. – pradyunsg

+1

@evi сообщение это в вопросе. – pradyunsg

ответ

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 = 
+0

Спасибо, что указали это! Я думал, что регулярное выражение было правильным, так как оно работало с локальной переменной. Я немного поиграл с выражением, которое вы написали, так как я хочу извлечь только URL-адреса, которые находятся между _8o _8r lfloat \ и onclick. И это работает! – evi

Смежные вопросы