この正規表現の意味は(\d+).*?
?
次の点に違いはあり(\d+) and [\d]+
ますか?
できるだけ多くの数字 (少なくとも1
) を取り、できるだけ少ない文字数 (改行を除く) を取ります。非貪欲な修飾子 ( ?
) は、パターンの残りの部分がそれに続く場合を除き、実際には役に立ちません0
。
>>> import re
>>> re.match(r'(\d+).*?', '123').group()
'123'
>>> re.match(r'(\d+).*?', '123abc').group()
'123'
(\d+)
との違い[\d]+
は、前者のグループと後者のグループはそうではないという事実です。([\d]+)
ただし、同等です。
>>> re.match(r'(\d+)', '123abc').groups()
('123',)
>>> re.match(r'[\d]+', '123abc').groups()
()
(\d)+ One or more occurance of digits,
.* followed by any characters,
? lazy operator i.e. return the minimum match.
group1 には少なくとも 1 つの数字が入り、group0 には group1 とその他の文字が含まれる可能性がありますが、必ずしもそうとは限りません。
編集された質問に答えるために編集します。私の知る限り、グループ化以外の2つのマッチングに違いはないはずです。