2017-12-31 253 views
0

私は新しいPythonプログラミングです。私は正規表現を使用して文字列を一致させた後にいくつかのデータを見つけようとしています。例えば正規表現のPythonで文字列をマッチングした後に特定の文字列を取得

:私は '20628103568' を探しています

str1 = 'ethernet33 20628103568 111111 22222222222 ' 

、しかし、私のコードで、それはここでethernet33

後にすべてのものを印刷していることは、コード

match1 = re.search("(?<=ethernet33\s).*(?<=\s)", str1) 
print match1.group() 

出力されます:

20628103568 111111 22222222222 

予想される出力:

20628103568 

これを達成するために、上記の正規表現を変更する方法上の任意のガイダンスはずっと

答えて

2

をいただければ幸いれますが、代わりに、この正規表現を使用する必要があります。

あなたに
>>> import re 

#   to match only the digits with v 
# your "positive lookbehind assertion" v 
>>> match1 = re.search('(?<=^ethernet33\s)\d+', str1) 
#       ^to just match the pattern at the start of string. 
#       ^prevents additional traversals 
>>> match1.group() 
'20628103568' 
+1

私にそれをビート:)。 FWIWでは、この場合、 'str1.split()[1]'だけが行います。 – heemayl

+1

さらに、開始を '^'とマッチさせると、さらにトラバーサルを保存できます。 '(?<=^ethernet33 \ s)\ d +' – heemayl

+0

@heemayl:ありがとう!より効率的です。答えにもそれを加えました –

0

を場合、私はstr1.split()[1]助けるかもしれないと思う

関連する問題