現在の目標
解いた問題
結論
正規表現で繰り返し回数を指定するときに, 変数を単純に使うことはできない. また, 正規表現を使いこなすにはもっと文字列操作の勉強が必要そう.
考え方
「(A 個の数字)(-)(B 個の数字)」というフォーマットになっているか確認すればよい, というシンプルな考え方です.
answer.py
# coding: utf-8
import re
A, B = map(int, input().split())
S = input()
p_regex = re.compile("\d"*A + "-" + "\d"*B)
mo = p_regex.search(S)
if mo:
print("Yes")
else:
print("No")
「r"\d{A}" + "-" + "\d{B}"」と書きたかったのですが, それでは繰り返し処理できないみたいです. そのため, * で繰り返すことにしました.
ほかの方の気になる回答がコチラ
another.py
# coding: utf-8
import re
A, B = map(int, input().split())
S = input()
pattern = r"\d{{{}}}-\d{{{}}}".format(A, B)
mo = re.search(pattern, S)
if mo:
print("Yes")
else:
print("No")
考え方は同じだと思うのですが, 「"\d{{{}}}-\d{{{}}}"」の意味がよくわからない...一番内側の {} は format の変数を指定するためのもので, 一番外側が繰り返しのための {} とすると, 真ん中の {} はナニモノ?
むすび
文字列操作をもっと勉強しよう.