Pythonで文字列を分割しようとしているので、特定の正規表現の前にすべてを得ることができます。正規表現を使ってPythonで文字列を分割する
例の文字列:(番号は後に何が来るのか、おそらく変動します)r'Num\d\d'
:"Num10"
、正規表現:"Some.File.Num10.example.txt"
私はこの部分の前にすべてのものを必要としています。
これを行う方法に関するアイデアはありますか?
Pythonで文字列を分割しようとしているので、特定の正規表現の前にすべてを得ることができます。正規表現を使ってPythonで文字列を分割する
例の文字列:(番号は後に何が来るのか、おそらく変動します)r'Num\d\d'
:"Num10"
、正規表現:"Some.File.Num10.example.txt"
私はこの部分の前にすべてのものを必要としています。
これを行う方法に関するアイデアはありますか?
>>> 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()をプロファイリングする小さなプログラムを書いて、上記のアサーションを確認しました。
あなたは検索が文字列全体をスキャンする必要がないので、これは、分割を行うことがより効率的であるPythonのre.split()
import re
my_str = "This is a string."
re.split("\W+", my_str)
['This', 'is', 'a', 'string', '']
>>> import re
>>> text = "Some.File.Num10.example.txt"
>>> re.split(r'Num\d{2}',text)[0]
'Some.File.'
数値は何でもかまいませんので、 'p = re.compile(" Num \ d ")'を使うことができます。 – theharshest