実践・初級問題チェック
問題 18 /40
reモジュールに関する記述で、マッチしないものはどれか。
選択 1
re.search('a..d', 'abcd')
選択 2
re.search('[cb]', 'abcd')
選択 3
re.match('a+', 'abcd')
選択 4
re.match('.cd', 'abcd')
解説
選択肢4が正解です。
search(pattern, string)とmatch(pattern, string)は、指定した文字列(string)が正規表現(pattern)にマッチするか調べる関数です。
search()は文字列の中の場所を問いませんが、match()は文字列の先頭がマッチするか判定します。
【選択肢1】
re.search('a..d', 'abcd')
「.」は任意の1文字を表す特殊文字です。
ここでは「..」に対して「bc」の2文字があるためマッチします。
【選択肢2】
re.search('[cb]', 'abcd')
「[ ]」は「[ ]」の中のいずれかの文字を表す特殊文字です。
ここでは「c」か「b」が文字列に含まれているか判定しており、順番は問わないためマッチします。
なお、いずれかの文字が含まれていればマッチするため「[ce]」はマッチしますが、「[ef]」はマッチしません。
【選択肢3】
re.match('a+', 'abcd')
「+」は1文字以上の繰り返しを表す特殊文字です。
「+」は「.」のように単独で使うのではなく、「a+」のように文字に付けて使います。
ここでは「a」が先頭で1文字以上繰り返されているため、マッチします。
【選択肢4】
re.match('.cd', 'abcd')
「.」は任意の1文字を表す特殊文字です。
ここでは「cd」の前に「ab」の2文字があるためマッチしません。「..cd」であればマッチします。
なお、マッチしないときの返り値は、FalseではなくNoneです。
正規表現の特殊文字
-------------------------------
\d 数字
\D 数字以外
\s 空白文字
\S 空白文字以外
\w 任意の英数字
\W 英数字以外
. 任意の1文字
^ 先頭
$ 末尾
* 0文字以上の繰り返し
+ 1文字以上の繰り返し
? 0回か1回の繰り返し
{m} m回の繰り返し
{m, n} m回以上、n回以下の繰り返し
[...] 指定したいずれかの文字
[^...] 指定したいずれかの文字以外
(x|y) xかyの選択
-------------------------------
(公式書籍 p.135)