2009-12-08 6 views
0

J'ai le html suivant contenu dans une chaîne.Regex avec vb.net

<tr>
      <td> Bonjour </td >
</tr >
<tr>
      <td> Monde </td >
</tr >
<tr>
      <td> permet sourire tous </td >
</tr >

Je voudrais utiliser RegEx pour trouver la <tr> </tr > qui contient le texte "Monde". La difficulté est qu'il peut y avoir d'autres <td> autour de celui qui contient le texte de recherche. Donc, nous devons être en mesure de rechercher le <tr> et </tr > le plus proche du texte de recherche avec du texte entre le <tr> et le texte de recherche.

Le résultat du match serait.

<tr>
      <td> Monde </td >
</tr >

J'utilise vb.net par la voie.

Quelqu'un peut-il aider?

Merci

Richard

+0

vous auriez pu facilement html tapé (au lieu de > <) en sélectionnant et le formatage avec ctrl-k – Amarghosh

+0

Lire ce billet de blog de notre chef bienveillant: http://www.codinghorror.com/blog/archives/001311.html –

Répondre

6

Tout d'abord, il y a lieu de relever que vous voulez utiliser le HTML Agility Pack, et non regex, pour ce genre de choses.

Mais autre que cela, un modèle pourrait ressembler à:

(<tr>.*?World.*?</tr>) 

C'est un modèle plutôt moche, mais là encore, utilisez le pack d'agilité.

+1

ne correspondrait-il pas les 6 premières lignes - du premier '' au '' après 'World'? – Amarghosh

+0

Non, les opérateurs non avides '?' S'assureront que les espaces entre '' et 'World' sont aussi petits que possible, sans casser le match –

+0

Testé sur Expresso et obtenu ceci. ' Bonjour Monde' – Amarghosh