Je voudrais accomplir ce que ce (invalide je crois) expression régulière essaie de faire:match tout sauf un sous-modèle
<p><a>([^(<\/a>)]+?)<\/a></p>uniquestring
correspondent essentiellement tout sauf une balise d'ancrage de fermeture. Simple non gourmand ne contribue pas ici parce que `UniqueString » peut très bien être après une autre balise d'ancrage de fermeture à distance:
<p><a>text I don't <tag>want</tag> to match</a></p>random
data<p><a>text I do <tag>want to</tag> match</a></p>uniquestring more
matches <p><a>of <tag>text I do</tag> want to match</a></p>uniquestring
J'ai donc plus balise entre les balises d'ancrage. Et j'utilise la présence de uniquestring
pour déterminer si je veux faire correspondre les données. Donc, un simple non-gourmand finit par tout correspondre à partir du début des données, je ne veux pas à la fin des données que je veux.
Je sais que je suis proche des problèmes les expressions régulières (ou au moins mes connaissances) ne sont pas bonnes à résoudre. Je pourrais juste à travers les données à un analyseur HTML/XML, mais c'est juste une recherche simple (ish).
Existe-t-il un moyen facile de faire cela que je suis juste absent?
En effet recherche:
Test! Et je le comprends presque. :-) –
J'aurais utilisé un * lookahead *, pas un lookbehind. À votre façon, il doit parcourir toute la séquence '' avant de réaliser qu'il n'était pas supposé le faire correspondre. '(?! <\/a>)' arrête la correspondance au premier caractère. –