2010-01-01 12 views
1

J'essaie d'obtenir des informations sur un site Web. L'information que je veux est dans une table donc j'ai fait une regex mais je ne connais pas la bonne façon de la simplifier.Répétition de groupes regex

Voici deux parties de mon regex que je voudrais simplifier:

<br>(.*)<br>(.*)<br>(.*) 

<tr><td>(.+)r>(.+)r>(.+)r>(.+).+</td></tr> # This part should be repeated n times(n = 1 to 10) 

J'ai regardé à travers la documentation python et je ne peux pas comprendre comment le faire. Peut-être pourriez-vous me donner un indice.

Merci, mF.

+1

Utilisez un analyseur HTML. –

Répondre

3

C'est la mauvaise façon d'aller à moins que vous essayez de gratter quelques données d'un minuscule fragment.

Ce serait beaucoup mieux si vous utilisiez un HTML tolérant. BeautifulSoup mentionné précédemment est un bon, mais il stagne et je ne crois pas qu'il soit maintenu activement plus.

Un analyseur hautement recommandé pour Python est lxml.

Il y avait un long fil discutant l'analyse de XHTML sur l'une de nos listes de diffusion locales here que vous pourriez trouver utile aussi. Ne pas utiliser regex pour le HTML!

1

Vous avez juste besoin de mettre le bloc dans parens puis utilisez les {...} opérateurs, par exemple:

(foo...){1,10} 

Matches 1 à 10 instances de la chose à l'intérieur de là. Compte tenu de votre exemple ci-dessus, vous pouvez imbriquer les:

((f..)(b..)){1,10} 
Questions connexes