2016-06-17 13 views
0

Pythonの正規表現にリストに行からエントリを抽出:私は何をしたいかは、私は次の文字列持つ

myst="Cluster 2 0  13aa,>FZGRY:07872:11201...*1 13aa,>FZGRY:08793:13012...at100.00%2 13aa,>FZGRY:04065:08067...at100.00%" 

>...で囲まれたコンテンツを抽出することです。リストに入れる は降伏:

['FZGRY:07872:11201','FZGRY:08793:13012', 'FZGRY:04065:08067'] 

しかし、なぜこの行は、仕事をしていません。

それを行うための正しい方法は何ですか?

+0

ごREのための生の文字列を使用してください: "(。*)> \ \ \。。。" '' rを – cdarke

答えて

3

これを行うには、周囲を見ることができます。

>>> re.findall(r'(?<=>)[^.]+(?=[.]{3})', myst) 
['FZGRY:07872:11201', 'FZGRY:08793:13012', 'FZGRY:04065:08067'] 

正規表現

  • (?<=>)正の後ろに見えます。文字列が>

  • [^.]+が先行しているかどうかをチェックし+が1つ以上に一致し、.以外のものにマッチします。

  • (?=[.]{3})ポジティブルックアヘッド。マッチした文字列は、あなたの正規表現が間違っている何...

が続いているか確認してください?ここで.*

  • >(.*)\.\.\.は貪欲で、可能な限り一致するようにしようとします。最後に?を追加して、貪欲でないようにします。

    >>> re.findall(">(.*?)\.\.\.",myst) 
    ['FZGRY:07872:11201', 'FZGRY:08793:13012', 'FZGRY:04065:08067'] 
    
関連する問題