2017-02-07 3 views
1

数字をn回繰り返し:Pythonの正規表現検索:これは、繰り返しの数字の一致を返さない理由を私は理解していない

import re 
digits = '122223456789' 
re.search(r'(\d)\4', digits) 

を代わりに、私は「エラー:4位の無効なグループリファレンス」を取得します

+0

'(\ d)\ 1 +'を意味しましたか? –

+0

're.search(r '((\ d)\ 2+)'、数字).group(1)'不明な回数の繰り返し。 'r '\ d {4}'と指定します。 – dawg

答えて

2

\4はpython-regexエンジンのグループ参照です。繰り返しを指定する場合は、{}を使用してください。

re.search(r'(\d){4}', digits) 

それとも、(\ d)の最初のキャプチャグループであるので、あなたは\1でそれを参照する必要が4桁繰り返しにマッチします。

re.search(r'(\d)\1{3}', digits) 

デモ:

In [5]: re.search(r'(\d)\1{3}', digits).group(0) 
Out[5]: '2222' 

あなたは、特定のグループにマッチした文字列の結果を得るためにsearch()機能のgroup()属性にグループ番号を渡すことができます。または、一致したもの全体を得るには0を渡すだけです。

+0

ありがとうございます。私は '(\ d)\ number'の' \ number'はグループ固有の繰り返しパターンの数と一致する方法だと考えました。しかし、それはperl変数のようなものです。 –

関連する問題