このフレーバーの文字列がたくさんあります。
#q1_a1
#q7
基本的に # は無視する必要がある記号です。# の後には、1 文字のアルファベットと数字が続きます。_
オプションで、アルファベットと数字の組み合わせを(アンダーバー) の後に続けることができます。
これが私が思いついたものです:
>>> pat = re.compile(r"#(.*)_?(.+)?")
>>> pat.match('#q1').groups()
('q1', None)
問題は#q1_a1
フォーマットの文字列です。私が作ったものをそのような文字列に適用すると:
>>> pat.findall('#q1_f1')
[('q1_f1', '')]
助言がありますか?