Pythonで文字列を分割して、特定の正規表現の前にすべてを取得しようとしています。
文字列の例:"Some.File.Num10.example.txt"
この部分の前にすべてが必要です:"Num10"
、正規表現:(r'Num\d\d'
数は異なり、場合によってはその後に続くものになります)。
これを行う方法についてのアイデアはありますか?
>>> 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()のプロファイルを作成する小さなプログラムを作成し、上記のアサーションを確認しました。
>>> import re
>>> text = "Some.File.Num10.example.txt"
>>> re.split(r'Num\d{2}',text)[0]
'Some.File.'
Pythonを使用できますre.split()
import re
my_str = "This is a string."
re.split("\W+", my_str)
['This', 'is', 'a', 'string', '']