正则表达式-跟踪数字2018

时间:2018-11-17 23:57:35

标签: python regex python-3.x

我创建了一个新线程,引用了该线程已有9年历史了:

Regular Expression patterns for Tracking numbers

此刻,我在这里的问题解决了UPS跟踪号码的格式。根据UPS.com,具有1Z的跟踪编号的格式应为1Z + 6个字符(数字或字母)+ 2个字符(数字或字母)+ 8个字符(数字或字母),示例格式为:1Z 89X406 C8 33660056 ,但是在上面的线程链接中引用的UPS的示例中,匹配格式以1Z 89S 406 B8 3322 005 6

为中心

在第二种匹配格式中,使用的模式是:

\b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]

但是,您也可以使用此模式(根据UPS引用正确格式的报价,以匹配第一种格式):\b(1Z ?[0-9A-Z]{6} ?[0-9A-Z]{2} ?[0-9A-Z]{8}

我猜我有一个问题可以归结为在使用任何一种匹配模式上是否有效率。我不明白为什么上面链接的OP使用第二种匹配模式,而不是使用符合UPS跟踪号格式的模式。

预先感谢,希望以后对其他人有帮助。

1 个答案:

答案 0 :(得分:1)

如果是我,我根本不会理会空格,因为它们似乎无关紧要。

tracking_number = "1Z 89S 406 B8 3322 005 6"
# Strip spaces out
tracking_number = tracking_number.replace(' ', '')
match = re.search(r'1Z[A-Z0-9]{16}', tracking_number)