2013-04-04 6 views
1

J'essaie de trouver plusieurs correspondances dans un fichier. J'utilise le code suivant:Motif de correspondance dans le fichier

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('\\','') 

mais cela ne donne aucun résultat. D'autre part, quand je passe le texte entier dans une variable, il trouve les motifs. Quelqu'un peut-il m'aider s'il vous plaît?

p.s. Une partie du texte dans le fichier:

pour (;;) { "__ ar": 1, "charge utile": null, "domops": [[ "remplacer", "# detailedsearch_more_pager", f alse, {"__ html": "\ u003Cdiv> \ u003Cdiv class = \" mbm detailsearch_result \ "> \ u003Civ classe = \" 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

pouvez-vous fournir certaines parties du fichier que vous essayez de lire! – theAlse

+0

le commentaire de theAlse + La partie avec vous qui vous intéresse. – pradyunsg

+1

@evi Post que dans la question. – pradyunsg

Répondre

1

Le problème semble être votre regex.

Utilisez celui-ci:

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

code:

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('\\','') 

Sortie:

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

Explication de mon regex:

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

Merci d'avoir signalé cela! Je pensais que l'expression régulière était correcte puisqu'elle travaillait sur une variable locale. J'ai joué un peu avec l'expression que vous avez écrite depuis que je veux extraire seulement les URLs qui se trouvent entre _8o _8r lfloat \ "et onclick. – evi

Questions connexes