2013-04-06 4 views
0

J'ai ce html:BeautifulSoup regex passant comme argument

title="Keeper: Michal Buchalik" class="pos_text">Buchalik</a></span>     
              <span class="pos_text pos3_l_5"> 

J'essaie de faire correspondre Buchalik.

je suis venu avec ce code:

for gk in soup.find_all(re.compile("pos_text pos3_l_\d{1,2}")): 
    print gk.previous_element.previous_element, 

Il ne correspond pas à rien et il doit y avoir un problème avec l'expression régulière, comme quand je tape dans un certain nombre en place de \d{1,2} cela fonctionne très bien.

+0

J'ai trouvé une erreur évidente dans ma regex, cette partie du code manquait 'class_ =', bien qu'elle ne me donne toujours pas la sortie attendue. – nutship

Répondre

1

Comme il est python, vous devez utiliser r pour « texte brut » ou échapper au caractère « \ »:

re.compile(r"pos_text pos3_l_\d{1,2}") 

OR 

re.compile("pos_text pos3_l_\\d{1,2}") 

voir si ça aide.

Cheers.

+0

Merci pour la réponse, mais l'évasion n'est pas nécessaire dans ce qui précède. Notez que dans la page HTML d'origine, il n'y a pas de caractère barre oblique inverse. – nutship

+0

Oui, mais votre expression régulière utilise la construction \ d (un chiffre). Donc, ce n'est pas le texte qui doit s'échapper, mais plutôt l'expression rationnelle elle-même. Essayez-le simplement? –

+0

Essayé, n'aide pas. – nutship

Questions connexes