2016-07-06 4 views
1

J'ai un motif qui trouve toutes les balises dans ce format, <. *:. *>. A partir de balises imbriquées, je ne prends que l'étiquette enfant. Ici, je dois distinguer les crochets (< et>) de '/ <' et '/>'. Y a-t-il un moyen de le faire dans le même modèle?Distinguer/<de <en python

par exemple: chaîne entrée

<testing this> any text </<this is not a tag>any text<this will fail/>> 

sortie:

['<testing this>','</<this is not a tag>','<this will fail/>>'] 

Toute suggestion s'il vous plaît laissez-moi savoir.

+3

Il semble inconfortablement que vous essayez d'analyser [X] HTML avec regex. [Do not.] (Http://stackoverflow.com/a/1732454/3001761) Utilisez un analyseur, c'est ce qu'ils sont pour! – jonrsharpe

+1

Si vous souhaitez utiliser RegEx, vous devez utiliser un LookBehind. – CodenameLambda

+0

Que signifie '/ <'? vous êtes sûr que ce n'est pas Aprillion

Répondre

0

Utilisez ce modèle:

(?<!/)<.*?(?<!/)> 

Le (?<!/) est un négatif qui assure lookbehind il n'y a pas slash directement à la gauche de chaque < ou > sans consommer réellement le caractère.

Check this pattern out on regex101.com