半角数字5桁かどうかを判別したいので
Python
1import re 2s = "000000" 3p = r"\d{5}" 4if re.match(p, s): 5 print("o") 6else: 7 print("x")
としたが、6桁以上でも○になってしまいました。
これについては match() ではなく fullmatch()
にしたことで問題なくなりましたが、全角文字で
○になってしまいます。
そのため、
Python
1import re 2s = "000000" 3p1 = r"\d{5}" # 数字5文字 4p2 = r"\w{5}" # 半角5文字 5if re.fullmatch(p1, s) and re.match(p2, s): 6 print("o") 7else: 8 print("x")
としました。
これで一応×の表示が出て、s = "00000" としたら○の表示になりました。
\wでも全角拾ってしまうようです。 他にいい方法があれば教えてください。 また、match()とfullmatch()で挙動が違ったのは "\d" の解釈が違うのでしょうか?
回答2件
あなたの回答
tips
プレビュー