对RegEx来说还是个新手,别对我太客气了。我想知道你是否可以捕获多个重复的可选字段?例如,此URL有多个相关的元值字段。但是有些网址只有一个meta,有些网址有3+。下面的RegEx将可选地仅捕获第一个元值。
我的源现在只需要捕获不到4个metas,所以我只需在RegEx中粘贴重复的:(((?!meta-value).)+meta-value">([^<]+))?来捕获前4个元数据。
然而,我想知道是否有更好的方法。我考虑过在单独的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
谢谢你的帮助。
发布于 2017-03-16 05:01:46
我不确定我是否完全理解了期望的结果,但是如果您在每个<a>标记中查找每个div元素的内容,那么我建议使用两个匹配项。
第一个方法应该获取所有的<a>标记及其内容:<a href="(.+?)".*?<\/a>,如果您愿意,还可以使用url的捕获组
然后迭代刚刚创建的<a>标记列表,并使用下面的表达式提取元部件:<div id="meta-value">(.*?)<\/div>
您可以尝试使用这些表达式here。
如果这不能满足您预期的结果,请进一步澄清。
https://stackoverflow.com/questions/42816759
复制相似问题