python - 正则表达式 - 跟踪号码 2018

标签 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跟踪号格式的模式。

提前致谢,并希望这对将来的其他人有所帮助。

最佳答案

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

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/

相关文章:

python - 在自己创建的 .egg 文件中使用 Python 模块

ruby-on-rails - 正则表达式替换时区偏移量

python - 从列表中删除最小的数字

python - 如何使用 FormRequest 发布具有多个同名输入的表单?

python - 删除 Pandas 中所有只有 1 值的变量

python - 当我在 Pulumi 中使用 F-string 通过 Python 创建连接字符串时收到错误

java - 计算正则表达式匹配数

java - 正则表达式捕获其间重复组数量未知的文本

python - 双重递归背后的概念

python-3.x - pyinstaller 创建的可执行文件不运行