正则表达式,带后缀的最后一场比赛

时间:2018-11-09 16:37:09

标签: regex

我知道这听起来像是被问过数百次的问题。但是我一直在搜索一个多小时,但发现没有一种解决方案适用于我的情况。

我有许多不同形式的

\d*'?\d+\.\d\d

我使用的字符串示例是

  

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

我只想获取e-mail之前与我的正则表达式相对应的最后一个匹配项,即1'013.93。我只想使用正则表达式,不使用多余的python,javascript或其他任何内容

我尝试过受Regex Last occurrence?How to capture only last match in RegexFind Last Occurrence of Regex Word和我自己的许多其他表达式启发的代码,但到目前为止似乎总是缺少一个< / p>

例如,在成功使用(\d*'?\d+\.\d\d)(?!.*\d*'?\d+\.\d\d)选择了最后一个数字之后,我尝试了(\d*'?\d+\.\d\d)(?!.*\d*'?\d+\.\d\d)(?=e-mail),该数字与任何内容都不匹配。

有什么见解吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

((\d+')?\d+(\.\d+)?)(?=[^\d]+e-mail)

第一组匹配您想要的号码。来自regex101.com:

enter image description here

答案 1 :(得分:1)

类似的事情,需要进行额外的数字格式检查:

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

Demo