将多个正则表达式组与前瞻相结合
combining multiple regex groups with lookahead
如何将 3 个正则表达式组合成 1 个表达式 - 如果可能的话?
我想获得第 th 标签值 first td 标签 value 和 a 标签中的 id 为此使用适当的正则表达式。我已经努力了一个小时才将它们全部集中在 1 中 expression.What 会是解决方案吗?
regex for th tag:
th[^>]+l">([^<]+)</th
regex for td tag:
td>([^<]+)</td
regex for a tag:
<a((?!</a).)id="([^"]+)"
我有一个类似这个片段的项目列表。
...
<th scope="col">1X2</th>
<th scope="col" class="goR">Odds</th>
</tr></thead>
<tbody>
<tr class="row1">
<td>Fortuna Köln</td>
<td class="prc "><label><a id="MarketGroupListComponent25-selection-38225206.1" />
...
这是一个可能的解决方案:
(?s)th[^>]+l">(.*?)<\/th>.*?<td>(.*?)<\/td>.*?<a id="(.*?)"
您需要 (?s)
修饰符来使 .
匹配换行符。
3 个所需的字符串在第 1、2 和 3 组中。
在这种情况下您不需要任何前瞻。
中查看
注:
这个正则表达式在很多奇怪的情况下都会失败,例如在包含 th
或 th
的 ID 或值中转义 \"
。
如果您知道 html 有效,则可以使用 Java HTML parser 进行更复杂的查询。如果 html 无效或 html 结构已更改,此解析器也可能失败。
如何将 3 个正则表达式组合成 1 个表达式 - 如果可能的话?
我想获得第 th 标签值 first td 标签 value 和 a 标签中的 id 为此使用适当的正则表达式。我已经努力了一个小时才将它们全部集中在 1 中 expression.What 会是解决方案吗?
regex for th tag:
th[^>]+l">([^<]+)</th
regex for td tag:
td>([^<]+)</td
regex for a tag:
<a((?!</a).)id="([^"]+)"
我有一个类似这个片段的项目列表。
...
<th scope="col">1X2</th>
<th scope="col" class="goR">Odds</th>
</tr></thead>
<tbody>
<tr class="row1">
<td>Fortuna Köln</td>
<td class="prc "><label><a id="MarketGroupListComponent25-selection-38225206.1" />
...
这是一个可能的解决方案:
(?s)th[^>]+l">(.*?)<\/th>.*?<td>(.*?)<\/td>.*?<a id="(.*?)"
您需要 (?s)
修饰符来使 .
匹配换行符。
3 个所需的字符串在第 1、2 和 3 组中。
在这种情况下您不需要任何前瞻。
中查看注:
这个正则表达式在很多奇怪的情况下都会失败,例如在包含 th
或 th
的 ID 或值中转义 \"
。
如果您知道 html 有效,则可以使用 Java HTML parser 进行更复杂的查询。如果 html 无效或 html 结构已更改,此解析器也可能失败。