在扫描和捕获应用程序中,我必须在发票文本中找到一个包含10位数字的发票号码。
问题是,可能还有10位数的电话号码和传真号码,但在大多数发票中,发票号码是第二个最后一个号码(之后有一个10位数的订单号)。我尝试过不同的方法,但我不知道如何获得第二次匹配?
我从[0-9]{10}开始,它可以找到所有的10位数字。然后,我在圆括号周围加上一些括号,这会返回组。所以,我想
(?:[0-9]{10}){2}[0-9]{10} 会给我第三次机会,但什么也没回。无论如何,我需要像count-1这样的东西来找到第二组,如果这有意义的话?
TestString:
Lorem ipsum dolor坐好了,敬请光临。马萨:马萨。镰刀,大鼠0234567890尺骨,紫癜>马齿苋,同坐大鼠。Nunc viverra >1111111111 .最烂的。活的象一只羚羊。皮伦提斯克>居住者摩尔比三世寺和1234567890只白蚁和马列苏阿达的名声>火鸡。丙酸噬菌体非果味足。1234567890莫里斯和奥尔西。Aenean nec 1234767890 lorem.
我想在“莫里斯”之前提取1234567890。
发布于 2017-10-24 02:03:03
这适用于您的测试字符串。
.*(\d{10}).*\d{10}.*$主要技巧是将最后的10位字符串作为regex的一部分,然后在其前面的10位字符串上使用一个捕获组。如果测试字符串有变化,您可能需要稍微使用regex。
https://stackoverflow.com/questions/46900994
复制相似问题