将多个正则表达式组与前瞻相结合

combining multiple regex groups with lookahead

如何将 3 个正则表达式组合成 1 个表达式 - 如果可能的话?
我想获得第 th 标签值 first td 标签 valuea 标签中的 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 组中。

在这种情况下您不需要任何前瞻。

action

中查看

注:

这个正则表达式在很多奇怪的情况下都会失败,例如在包含 thth 的 ID 或值中转义 \"。 如果您知道 html 有效,则可以使用 Java HTML parser 进行更复杂的查询。如果 html 无效或 html 结构已更改,此解析器也可能失败。