数字、_ および ? を含む、コンマで区切られた 7 文字の任意の数の文字列との一致を試みます。
x = re.compile(r"^([0-9_\?]{7})(,\1)*$")
>>> x.match("123456?")
<_sre.SRE_Match object at 0x0046C800>
>>> x.match("12345??")
<_sre.SRE_Match object at 0x023483C8>
>>> x.match("1234???")
<_sre.SRE_Match object at 0x0046C800>
>>> x.match("123????")
<_sre.SRE_Match object at 0x023483C8>
>>> x.match("12?????")
<_sre.SRE_Match object at 0x0046C800>
>>> x.match("1??????")
<_sre.SRE_Match object at 0x023483C8>
>>> x.match("???????")
<_sre.SRE_Match object at 0x0046C800>
>>> x.match("???????,1234567")
>>>
^^^^^^^^^^^^^^^^^^^^^^^^ここが失敗です
vvvvvvvvvvvvvvvvvvvvvしかし、? がない場合は繰り返しが機能します。文字列で
>>> x.match("1234567,1234567")
<_sre.SRE_Match object at 0x023483C8>
私も試してみました:
x = re.compile(r"^([0-9_\\?]{7})(,\1)*$")
しかし、それは \ 文字に一致することを可能にします (予想どおり)。
私の正規表現の何が問題になっていますか?