2016-04-10 8 views

答えて

2

あなたはre.finditerの代わりre.findallを使用し、全体のマッチンググループを印刷する必要があります:

>>> for m in re.finditer('(ra|RA)[a-zA-Z0-9]*',"RAJA45909"): 
...  print(m.group()) 
... 
RAJA45909 

findallのドキュメントは言う:

1つまたは複数のグループが、パターンに復帰存在している場合グループ のリスト;パターンに2つ以上の グループがある場合、これはタプルのリストになります。

正規表現には1つのグループしかないので、その結果、その1つのグループに一致するテキストのリストになります。私たちは、他のグループを追加する場合は、以下を参照してください。

>>> for m in re.findall('(ra|RA)([a-zA-Z0-9]*)',"RAJA45909"): 
...  print(m) 
... 
('RA', 'JA45909') 

グループで使用するときにfindall全体の正規表現に一致するだけのグループにマッチした部分を返します。 finditerは常に完全一致オブジェクトを返します。

+0

を使用することができます。 –

0

あなたは、私が最初のステップでそれを受け入れているだろうが、私はタイムアウトまで待つ必要があり、この

print(re.findall('((?:ra|RA)[a-zA-Z0-9]*)',"RAJA45909")) 

Ideone Demo

関連する問題