2010-08-18 3 views
0

De la source html, je dois identifier une balise d'ancrage qui ne doit pas être imbriquée.regex pour identifier une balise d'ancrage qui ne doit pas être imbriquée

Par exemple:

<a href="http://www.abc.com">abc<a href="http://www.dbc.com">dbc</a> 

A partir de ce sur le premier match, il doit retourner

<a href="http://www.abc.com">abc 

sur la suite trouver

<a href="http://www.dbc.com>dbc</a> 

Tout en trouvant devrait revenir de l'étiquette ouverte d'ancrage pour fermer balise d'ancrage si elle n'est pas imbriquée. Si elle est imbriquée, elle doit renvoyer la chaîne de la balise d'ancrage ouverte à avant le début de la balise d'ancrage ouverte imbriquée.

Aidez-nous s'il vous plaît. Merci d'avance

+1

Avez-vous besoin d'utiliser regex? Parce que si vous n'avez pas besoin d'utiliser regex, je suggère d'utiliser un analyseur XML pour rechercher des balises A imbriquées à la place. –

Répondre

3

Je suggère d'utiliser JTidy. Malgré son nom, il s'agit d'un analyseur HTML et traitera tous les cas de bord qui trébucheront les expressions régulières (ce qui n'est pas surprenant étant donné que le HTML n'est pas régulier).

+0

+1 pour "HTML is not regular" – aioobe

+0

Je sais que le HTML n'est pas régulier. Mais pourquoi ne pouvons-nous pas l'utiliser en utilisant regex – Roshan

+1

Parce que les expressions régulières ne peuvent être utilisées de manière fiable avec des constructions régulières! Comme vous avez découvert que le HTML peut être formé de manière non régulière, et que les expressions régulières n'ont pas la capacité d'interpréter cela avec succès –

Questions connexes