YYYYYYYYXXXXXXXXZZZZZZZZ 形式の文字列が多数あります。ここで、X、Y、および Z は固定長の 8 桁の数値です。ここでの問題は、整数の中間シーケンスを解析し、先頭のゼロを削除する必要があることです。残念ながら、3 つのシーケンスのそれぞれが開始/終了する場所を特定する唯一の方法は、桁数を数えることです。
私は現在、次の2つのステップでそれを行っています。
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
しかし、より良い方法はありますか?先頭のゼロを除いて、2 番目のシーケンスと一致する単一の正規表現を作成することは可能ですか?
私は次のことを行う正規表現を探していると思います:
- 最初の 8 桁をスキップします。
- 先行ゼロをスキップします。
- その後、後ろに 16 文字、前に 8 文字あるところまでキャプチャします。
前述のように、上記の解決策は機能するため、この問題の目的は、正規表現に関する私の知識を向上させることです。ポインタをいただければ幸いです。