1

「abcdef@aaaa.com」のような出力を取得したいのですが、一致する式として「com」しか表示されません。findall を使用して完全に一致した式を取得するにはどうすればよいですか?

>>> pat = re.compile('[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9][a-zA-Z0-9]*[.](com|co.in|org|edu)')
>>> pat.findall('abcdef@aaaa.com')
['com']
>>> pat.findall('abcdef@aaaa.com bsdkbsbd@bkdjb.orgkjdd')
['com', 'org']

Required Output:-
['abcdef@aaaa.com']
['abcdef@aaaa.com', 'bsdkbsbd@bkdjb.org']
4

1 に答える 1

1

最後の角かっこは、最後のグループ、つまり と のみをキャプチャしcomますorg

正規表現を次のように変更します。

[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9]+[.](?:com|co\.in|org|edu)
                                            ^^

これにより、グループが一致しないことが保証されるため、グループ化された部分のみではなく、一致する文字列が保存されます。

また、なぜこれらすべてのコンマを入れたのかわかりません。それらを削除しましたが、正規表現はまだ機能しています。

于 2013-05-29T18:01:01.010 に答える