Regex 正则表达式,在后缀之前进行最后一次匹配

Regex 正则表达式,在后缀之前进行最后一次匹配,regex,Regex,我知道这听起来像是被问了几百次的问题。但我已经搜索了一个多小时,我发现的解决方案都不适用于我的案例 我有很多不同的表格编号 \d*”?\d+\.\d\d 我使用的字符串的一个例子是 基本物品价格为1'245.48,税金为18.45,奖金为250.00,总价为1'013.93。如果出现问题,请联系我们的电子邮件。银行账户784.45 我只想获得与我的正则表达式对应的电子邮件之前的最后一个匹配项,即1'013.93。我想只使用正则表达式,不使用额外的python、javascript或任何东西 我尝

我知道这听起来像是被问了几百次的问题。但我已经搜索了一个多小时,我发现的解决方案都不适用于我的案例

我有很多不同的表格编号

\d*”?\d+\.\d\d

我使用的字符串的一个例子是

基本物品价格为1'245.48,税金为18.45,奖金为250.00,总价为1'013.93。如果出现问题,请联系我们的电子邮件。银行账户784.45

我只想获得与我的正则表达式对应的
电子邮件
之前的最后一个匹配项,即
1'013.93
。我想只使用正则表达式,不使用额外的python、javascript或任何东西

我尝试过受这个、这个、这个和我自己的许多其他表达启发的代码,但到目前为止,似乎总是缺少一部分

例如,在使用
(\d*”?\d+\.\d\d)(?!.\d*”?\d+\.\d\d)
成功选择最后一个数字后,我尝试了
(\d*”?\d+\.\d\d*”?\d+\.\d\d)(?=电子邮件)
,这与任何内容都不匹配

有什么见解吗?

您可以尝试以下方法:

((\d+')?\d+(\.\d+)?)(?=[^\d]+e-mail)
第一组匹配您想要的号码。从regex101.com:


类似这样的内容,带有额外的数字格式检查:

((\d{1,3}')*(\d{1,3})\.\d{2})(?=\D+e-mail)

在您的情况下,这将是
(\d*”?\d+\.\d\d)(?:(?!\d+\.\d\d)。*电子邮件