0

この正規表現の意味は(\d+).*??

次の点に違いはあり(\d+) and [\d]+ますか?

4

3 に答える 3

2

できるだけ多くの数字 (少なくとも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()
()
于 2013-05-29T13:07:44.673 に答える
0
(\d)+  One or more occurance of digits, 
.* followed by any characters,
? lazy operator i.e. return the minimum match.
于 2013-05-29T13:07:40.743 に答える
0

group1 には少なくとも 1 つの数字が入り、group0 には group1 とその他の文字が含まれる可能性がありますが、必ずしもそうとは限りません。

編集された質問に答えるために編集します。私の知る限り、グループ化以外の2つのマッチングに違いはないはずです。

于 2013-05-29T13:08:36.903 に答える