2012-05-10 209 views
10

我想在Python中分割一個字符串,以便在某個正則表達式之前得到所有東西。在Python中使用正則表達式分割字符串

例如字符串:"Some.File.Num10.example.txt"

我該部分之前所需要的一切:"Num10",正則表達式:r'Num\d\d'(數量會有所不同,可能之後會發生什麼)。

有關如何做到這一點的任何想法?

回答

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

這將是更有效的,這樣做的分裂,因爲搜索不具有掃描整個字符串。它在第一場比賽中休息。在你的例子中,它不會有所不同,因爲字符串很短,但是如果你的字符串很長,並且你知道匹配將在一開始,那麼這種方法會更快。

我剛剛寫了一個小程序來剖析搜索()和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.' 
相關問題