RegEx相当新,请放轻松。我想知道你是否可以捕获多个重复的可选字段?例如,此URL具有多个RELATED元值字段。但有些网址只有一个元素,有些则有3个以上。以下RegEx将可选地仅捕获第一个元值。
我的源代码现在只需捕获少于4个metas,因此我可以在RegEx中粘贴重复:(((?!meta-value).)+meta-value">([^<]+))?
来捕获前四个。
然而,我想知道是否有更好的方法。我考虑在单独的RegEx中捕获元数据,但它们与URL相关,所以我试图同时捕获它们。
示例RegEx:
<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
感谢您的帮助。
答案 0 :(得分:0)
我不确定我是否完全理解了所需的结果,但如果您要查找每个div
标记中每个<a>
元素的内容,那么我建议您进行两次匹配。
第一个应该获取所有<a>
标记及其内容:<a href="(.+?)".*?<\/a>
如果您愿意,可以使用网址的捕获组
然后迭代刚刚创建的<a>
标记列表,并使用此表达式来提取元部分:<div id="meta-value">(.*?)<\/div>
您可以使用这些表达式here。
如果这不符合您的预期结果,请进一步澄清。