Я бы хотел выполнить то, что пытается сделать это (я считаю, недействительным) регулярное выражение:
<p><a>([^(<\/a>)]+?)<\/a></p>uniquestring
По сути, сопоставьте все, кроме закрывающего тега привязки. Простой не жадный здесь не поможет, потому что «uniquestring» вполне может быть после другого удаленного закрывающего тега привязки:
<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
Так что у меня есть больше тегов между тегами привязки. И я использую присутствие uniquestring
, чтобы определить, хочу ли я сопоставить данные. Таким образом, простой не жадный в конечном итоге сопоставляет все от начала данных, которые я не хочу, до конца данных, которые я хочу.
Я знаю, что приближаюсь к проблемам, которые регулярные выражения (или, по крайней мере, мои знания о них) плохо решают. Я мог бы просто просмотреть данные в парсере HTML / XML, но это всего лишь один простой (ish) поиск.
Есть ли какой-нибудь простой способ сделать это, что я просто скучаю?