11

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

文字列の例:"Some.File.Num10.example.txt"

この部分の前にすべてが必要です:"Num10"、正規表現:(r'Num\d\d'数は異なり、場合によってはその後に続くものになります)。

これを行う方法についてのアイデアはありますか?

4

3 に答える 3

13
>>> 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()のプロファイルを作成する小さなプログラムを作成し、上記のアサーションを確認しました。

于 2012-05-10T23:40:34.670 に答える
10
>>> import re
>>> text = "Some.File.Num10.example.txt"
>>> re.split(r'Num\d{2}',text)[0]
'Some.File.'
于 2012-05-10T23:34:30.570 に答える
5

Pythonを使用できますre.split()

import re

my_str = "This is a string."

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

['This', 'is', 'a', 'string', '']
于 2012-05-10T23:29:13.513 に答える