我有大量格式为 YYYYYYYYXXXXXXXXZZZZZZZZ 的字符串,其中 X、Y 和 Z 是固定长度的数字,八位数。现在,问题是我需要解析出中间的整数序列并删除任何前导零。不幸的是,确定三个序列中每一个的开始/结束位置的唯一方法是计算位数。
我目前分两步进行,即:
m = re.match(
r"(?P<first_sequence>\d{8})"
r"(?P<second_sequence>\d{8})"
r"(?P<third_sequence>\d{8})",
string)
second_secquence = m.group(2)
second_secquence.lstrip(0)
哪个确实有效,并给了我正确的结果,例如:
112233441234567855667788 --> 12345678
112233440012345655667788 --> 123456
112233001234567855667788 --> 12345678
112233000012345655667788 --> 123456
但是有更好的方法吗?是否可以编写一个与第二个序列匹配的正则表达式,没有前导零?
我想我正在寻找执行以下操作的正则表达式:
- 跳过前八位数字。
- 跳过任何前导零。
- 之后捕获任何内容,直到后面有 16 个字符/前面有 8 个字符。
如前所述,上述解决方案确实有效,所以这个问题的目的更多是为了提高我对正则表达式的了解。我很感激任何指示。