在Regex中查找字符串的倒数第二次出现



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

问题是,可能还有10位数的电话号码和传真号码,但在大多数发票中,发票号码是倒数第二个号码(后面有一个10位数的订单号)。我尝试过不同的方法,但我不知道如何在比赛中倒数第二次出现?

我从[0-9]{10}开始,它查找所有的十位数。然后我在周围放了一些括号,这会返回组。所以,然后我想

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

本可以给我第三次机会,但没有任何回报。在任何情况下,我都需要像count-1这样的东西来找到倒数第二组,如果这有意义的话?

测试字符串:

Lorem ipsum悲哀坐amet,consectetuer adipiscing elit。Maecenas porttitor>康格马萨。Fusce posuere,magna sed pulvinar 0234567890 ultricies,purus>electus malesuada libero,坐在amet commodo magna eros quis urna。Nunc viverra>1111111111 impreciate enim。Fusce est。维瓦玛斯是一台电视机。Pellentsque>居住在三分之一以上的老年人和1234567890 netus和malesuada家族的老年人。不好吃的蜈蚣。1234567890 Mauris等人。埃涅安nec 123467890 lorem。

我想提取'Mauris'之前的1234567890。

这适用于测试字符串。

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

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

尝试

/.*(bd{10}b).*bd{10}b/

最新更新