2016-05-29 6 views
2

私は最近正規表現をプログラムで使用しています。このプログラムでは、特定のREと一致する単語のリスト内の単語を見つけるためにそれらを使用しました。しかし、私はこのプログラムで逆参照を試みたとき、私は興味深い結果を得ました。ここで正規表現の逆参照findallが機能しない

コードされています

import re 
pattern = re.compile(r"[abcgr]([a-z])\1[ldc]") 
string = "reel reed have that with this they" 
print(re.findall(pattern, string)) 

私が期待したものが結果["reel","reed"]だった(私はPythexとそれを使用した場合、正規表現は、これらにマッチした)

しかし、私のpythonを使用してコードを実行しました(私はより多くの体験を持つ人

['e','e']

してくださいすることができます:私は以下の結果を得た)3.5.1を使用します私はなぜこの問題を抱えているのか、それを解決するために何ができるのかを説明します。

ありがとうございます。

+0

pythexは '...同じ結果を与えたe'と' e'参照してください.... –

+0

@ TadhgMcDonald-Jensen申し訳ありません、私は単純に正規表現と "reel"と "reed"をマッチさせようとしましたが、Pythexでfindallを使用しようとはしませんでした。 –

+0

可能な重複 - http://stackoverflow.com/questions/8110059/python-regex-search-and-findall – SilentMonk

答えて

2

re.findallは、キャプチャグループでキャプチャされたキャプチャ値のみを正規表現パターン内に返します。

(全試合)ゼロ番目のグループを維持します

使用re.finditer

import re 
p = re.compile(r'[abcgr]([a-z])\1[ldc]') 
s = "reel reed have that with this they" 
print([x.group(0) for x in p.finditer(s)]) 

IDEONE demo

関連する問題