如何仅捕获第一组正则表达式?

时间:2018-12-27 07:02:26

标签: regex

我基本上是想捕获网站上的最新订单,但是使用正则表达式,所有订单都被捕获了。

我尝试过的正则表达式是:

(?<=<td class="date">\n)(.*)(?=<\/td>)

这是文字

</td>
<td class="date">
24.12.18</td>
<td class="oTotal">
0,00 €</td>
<td class="statusPayment">

还有更多这样的行,这使得不可能只捕获第一个。期待您的建议。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用与正则表达式匹配的正则表达式,使用先行记录来捕获组1中所需的日期,然后使用.*来捕获其余内容,因此没有第二个匹配项。

(?s)<td class="date">\s*([\d.]*)(?=<\/td>).*

此处(?s)用于启用点匹配新行。

Check here

编辑:捕获数据和价格

您可以使用此正则表达式捕获组1中的日期和组2中的价格,

(?s)<td class="date">\s*([\d.]*)<\/td>\s*<td\s+class="oTotal">\s*(.*?)<\/td>.*

Demo for data and price