我有可读形式的发票。我需要从发票中提取采购订单编号。采购订单编号采用特定格式(26123456, 26234567)
。它以26
开头,后跟6
个数字。我试图使用正则表达式提取它。
我已将此作为参数传递给我。
[26]\d{6,6}
我也试过这个^[26]\d{6,6}
然而,我面临的问题是:
如果采购订单编号为26454545
且在采购订单编号之前,发票中还有其他编号,例如电话号码,其中包含26
的子字符串,则也会提取该编号。对于前者12345678987
此数字也被提取,因为子字符串中存在2和6。
答案 0 :(得分:1)
删除字符类并添加字边界。
\b26\d{6}\b
[26]
将匹配给定列表中的单个字符,无论它是2还是6。要匹配数字26,只需使用该数字。
在开头和结尾添加\b
有助于匹配完整的数字。由于\b
匹配单词字符和非单词字符。你也可以在这里使用断言,如(?<!\d)26\d{6}(?!\d)
。
还有另一种模式我要提取12300012345.在前三个数字之后总是有3个零后跟5个数字。
\b\d{3}000\d{5}\b
如果要将两者结合起来,则需要使用正则表达式交替运算符|
\b26\d{6}\b|\b\d{3}000\d{5}\b