2012-05-10 13 views
10

Pythonで文字列を分割しようとしているので、特定の正規表現の前にすべてを得ることができます。正規表現を使ってPythonで文字列を分割する

例の文字列:(番号は後に何が来るのか、おそらく変動します)r'Num\d\d'"Num10"、正規表現:"Some.File.Num10.example.txt"

私はこの部分の前にすべてのものを必要としています。

これを行う方法に関するアイデアはありますか?

答えて

10
>>> import re 
>>> s = "Some.File.Num10.example.txt" 
>>> p = re.compile("Num\d{2}") 
>>> match = p.search(s) 
>>> s[:match.start()] 
'Some.File.' 

を使用することができます。それは最初の試合で壊れます。あなたの例では、文字列が短いのとは違ってはいけませんが、文字列が非常に長く、最初に一致するとわかっている場合には、この方法は高速になります。

私はちょうどsearch()とsplit()をプロファイリングする小さなプログラムを書いて、上記のアサーションを確認しました。

+0

数値は何でもかまいませんので、 'p = re.compile(" Num \ d ")'を使うことができます。 – theharshest

4

あなたは検索が文字列全体をスキャンする必要がないので、これは、分割を行うことがより効率的であるPythonのre.split()

import re 

my_str = "This is a string." 

re.split("\W+", my_str) 

['This', 'is', 'a', 'string', ''] 
9
>>> import re 
>>> text = "Some.File.Num10.example.txt" 
>>> re.split(r'Num\d{2}',text)[0] 
'Some.File.' 
関連する問題