正则表达式捕获多个重复的可选字段?
RegEx Capture Multiple Repeating Optional Fields?
刚接触 RegEx,请放轻松。我想知道您是否可以捕获多个重复的可选字段?例如,这个 URL 有多个 RELATED 元值字段。但是有些 URL 只有一个 meta,其他人有 3+。下面的 RegEx 将选择性地只捕获第一个元值。
我的源代码现在只需要捕获不到 4 个元数据,因此我只需在 RegEx 中粘贴 repeating: (((?!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
感谢您的帮助。
我不确定我是否完全理解所需的结果,但如果您要查找每个 <a>
标记中每个 div
元素的内容,那么我建议两个匹配项。
第一个应该获取所有 <a>
标签及其内容:<a href="(.+?)".*?<\/a>
如果需要
,可以使用 url 的捕获组
然后遍历您刚刚创建的 <a>
标签列表并使用此表达式提取元部分:<div id="meta-value">(.*?)<\/div>
您可以尝试使用这些表达式 here。
如果这不能满足您期望的结果,请进一步说明。
刚接触 RegEx,请放轻松。我想知道您是否可以捕获多个重复的可选字段?例如,这个 URL 有多个 RELATED 元值字段。但是有些 URL 只有一个 meta,其他人有 3+。下面的 RegEx 将选择性地只捕获第一个元值。
我的源代码现在只需要捕获不到 4 个元数据,因此我只需在 RegEx 中粘贴 repeating: (((?!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
感谢您的帮助。
我不确定我是否完全理解所需的结果,但如果您要查找每个 <a>
标记中每个 div
元素的内容,那么我建议两个匹配项。
第一个应该获取所有 <a>
标签及其内容:<a href="(.+?)".*?<\/a>
如果需要
然后遍历您刚刚创建的 <a>
标签列表并使用此表达式提取元部分:<div id="meta-value">(.*?)<\/div>
您可以尝试使用这些表达式 here。
如果这不能满足您期望的结果,请进一步说明。