Довольно новичок в RegEx, полегче со мной. Мне было интересно, можете ли вы захватить несколько повторяющихся необязательных полей? Например, этот URL имеет несколько полей мета-значения RELATED. Но у некоторых URL есть только одна мета, у других — 3+. Приведенное ниже регулярное выражение необязательно будет захватывать только первое мета-значение.
Моему источнику теперь нужно захватить менее 4 метаданных, поэтому я могу просто вставить повторяющееся: (((?!meta-value).)+meta-value">([^<]+))?
в RegEx, чтобы захватить первые четыре.
Тем не менее, мне было интересно, есть ли лучший способ. Я рассматривал возможность захвата метаданных в отдельном регулярном выражении, но они связаны с URL-адресом, поэтому я пытался захватить их одновременно.
Пример регулярного выражения:
<a href="([^"]+)(((?!meta-value).)+meta-value">([^<]+))?
Пример текста (первый URL-адрес имеет две категории мета-значений, второй URL-адрес имеет только одну):
bla bla <a href="testurl.html"> bla bla <div id="meta-value">Category</div> bla bla bla <div id="meta-value">Diff Category</div> bla bla <a href="testurl2.html"> thsdlkjfh <div id="meta-value">Category2</div> bla bla bla
http://www.regexpal.com/?fam=97173
Спасибо за помощь.