2016-12-10 16 views
0

私は単純な正規表現クエリを持っています。ここRegex:一致する文字のない個々の文字を一致させる

が入力される:

DLWLALDYVASQASV 

所望の出力は、太字の文字の位置です。 DLWLAL DY VA S QASV

だからDであろう:6、Y 7、S:10。

私はPythonを使用していますので、span()またはstart()を使用して一致の開始位置を取得できます。しかし、私が次のようなものを使用しようとすると:DY.{2}Sそれは文字の間に一致し、マッチの最初の(そしてスパンの場合は最後の)文字の位置を与えます。

指定された各文字の位置を取得する機能がありますか?その間の文字は含まれていませんか?

+0

あなたがしようとしていることは、最初のDまたは最後のSを望んでいない理由は少し不明ですか? DとYは一緒でなければなりません。この場合、Yの位置を抽出するポイントは何ですか? (もしあなたがすでにYの後に2文字であることが分かっているなら、Sと同じ質問) –

+0

また、 're.match(r'DY。{2} S '、' DLWLALDYVASQASV ')'は 'None'を返します。私は確かに理由は分かっていない。 –

+0

私はそれらが指定された文字の位置を望むのは、タンパク質配列の特定の残基に関係するからです。 – Dider

答えて

1
match = re.search(r'(D)(Y)..(S)', 'DLWLALDYVASQASV') 
print([match.group(i) for i in range(4)]) 
>>> ['DYVAS', 'D', 'Y', 'S'] 
print([match.span(i) for i in range(4)]) 
>>> [(6, 11), (6, 7), (7, 8), (10, 11)] 
print([match.start(i) for i in range(4)]) 
>>> [6, 6, 7, 10] 

正規表現の部分式を角括弧に入れ、一致するオブジェクトを介して対応する部分文字列にアクセスすることができます。詳細についてはMatchオブジェクトのdocumentationを参照してください。

関連する問題