質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

484閲覧

Python3 Tkinter 半角数字5桁かどうか判別したい

person

総合スコア223

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/09/15 03:57

編集2020/09/15 11:02

半角数字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" の解釈が違うのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jeanbiego

2020/09/15 04:05

2個目のコード、p1とp2を使ってなくて、定義されていないpが使われています。実際に動かしたコードはこれですか?
person

2020/09/15 04:36

申し訳ないです。 もう一度試したら全角でも○になってしまいました。 \wでも全角拾ってしまうようです。
guest

回答2

0

python3の\dは全角数字も含むようですね。
matchとfullmatchの挙動が違うとありますが特にそんなことはありません。
matchでも\dを使うと全角数字も一致になります。

特に半角数字と言うことならば[0-9]で指定すればいいでしょう。
これでfullmatchを使うか
正規表現パターンの方に行頭を表す^と、行末を表す$を付けるかすればよいでしょう。

python

1import re 2 3def chkzerofull(s): 4 p = r"[0-9]{5}" 5 if re.fullmatch(p, s): 6 print("o") 7 else: 8 print("x") 9 10def chkzero(s): 11 p = r"^[0-9]{5}$" 12 if re.match(p, s): 13 print("o") 14 else: 15 print("x") 16 17zero5 = "00000" 18zero6 = "000000" 19 20chkzerofull(zero5) 21# o 22chkzerofull(zero6) 23# x 24chkzero(zero5) 25# o 26chkzero(zero6) 27# x

投稿2020/09/15 04:19

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

\dが全角数字に反応するのは知りませんでした。
以下でどうでしょうか。

python3

1import re 2s = "000000" 3p = r"[0-9]{5}" 4if re.fullmatch(p, s): 5 print("o") 6else: 7 print("x")

投稿2020/09/15 04:11

jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問