【发布时间】:2018-11-17 23:57:34
【问题描述】:
我创建了一个引用该线程的新线程,该线程已有 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 跟踪号格式的模式。
在此先感谢,希望这对以后的其他人有所帮助。
【问题讨论】:
-
第二个更严格,因为它只匹配 6 个连续的字母数字字符,而第一个允许 3 个组之间有空格。所以这取决于您输入的格式有多严格,因为它可能并不总是符合UPS指定的格式
-
嗯,第二个模式与第一个线程中的
1Z 89S 406 B8 3322 005 6不匹配,这可能是{3}s 而不是{6}s 的原因
标签: python regex python-3.x