在Regex中查找字符串的第二个最后一次出现

时间:2017-10-24 01:50:24

标签: regex

我必须在扫描和捕获应用程序的发票文本中找到一个十位数的发票号。

问题是,可能还有10位数的电话号码和传真号码,但在大多数发票中,发票号码是倒数第二个号码(后面有一个十位数的订单号码)。我尝试了不同的方法,但是我无法弄清楚如何获得第二次匹配?

我从[0-9]{10}开始,找到所有十位数字。然后我把一些括号括起来,返回组。那么,我想了

(?:[0-9]{10}){2}[0-9]{10} 

会给我第三次出现,但它什么都不返回。在任何情况下,如果有意义的话,我需要像count-1那样找到倒数第二组?

TestString:

  

Lorem ipsum dolor坐下来,这是一种不可或缺的精神。 Maecenas porttitor> congue massa。 Fusce posuere,magna sed pulvinar 0234567890 ultricies,purus> lectus malesuada libero,sit amet commodo magna eros quis urna。 Nunc viverra> 1111111111 imperdiet enim。 Fusce est.Vivamus是一个告密者。 Pellentesque> habitant morbi tristique senectus et 1234567890 netus et malesuada fames ac> turpis egestas。 Proin pharetra nonummy pede。 1234567890 Mauris et orci。 Aenean nec 1234767890 lorem。

我希望在Mauris'之前提取1234567890。

2 个答案:

答案 0 :(得分:0)

/.*(\b\d{10}\b).*\b\d{10}\b/

答案 1 :(得分:0)

这适用于您的测试字符串。

.*(\d{10}).*\d{10}.*$

主要技巧是将最后10位数字符串作为正则表达式的一部分,然后在其前面的10位数字符串上使用捕获组。如果您的测试字符串有变化,您可能需要使用正则表达式。