如何将3个正则表达式组合成1个表达式 - 如果可能的话? 我想获得第一个 th标记值 第一个 td 标记值和 id 来自 a 标记使用正确的正则表达式。我已经挣扎了一个小时,让他们全部用1个表达。这会是什么解决方案?
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" />
...
答案 0 :(得分:1)
这是一个可能的解决方案:
(?s)th[^>]+l">(.*?)<\/th>.*?<td>(.*?)<\/td>.*?<a id="(.*?)"
您需要(?s)
修饰符才能使.
与换行符匹配。
3个所需的字符串分别为1,2和3组。
在这种情况下,你不需要任何前瞻。
中查看注意:
这个正则表达式会因许多奇怪的情况而失败,例如:已转储\"
个ID或包含th
或th
的值。
如果您知道html有效,则可以使用Java HTML parser进行更复杂的查询。如果html无效或html结构已更改,此解析器也可能失败。