我创建了一个引用该线程的新线程,该线程已经有 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跟踪号格式的模式。
提前致谢,并希望这对将来的其他人有所帮助。
最佳答案
如果是我,我根本不会理会空格,因为它们似乎并不重要。
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)
关于python - 正则表达式 - 跟踪号码 2018,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53356710/