我想在Python中分割一個字符串,以便在某個正則表達式之前得到所有東西。在Python中使用正則表達式分割字符串
例如字符串:"Some.File.Num10.example.txt"
我該部分之前所需要的一切:"Num10"
,正則表達式:r'Num\d\d'
(數量會有所不同,可能之後會發生什麼)。
有關如何做到這一點的任何想法?
我想在Python中分割一個字符串,以便在某個正則表達式之前得到所有東西。在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.'
這將是更有效的,這樣做的分裂,因爲搜索不具有掃描整個字符串。它在第一場比賽中休息。在你的例子中,它不會有所不同,因爲字符串很短,但是如果你的字符串很長,並且你知道匹配將在一開始,那麼這種方法會更快。
我剛剛寫了一個小程序來剖析搜索()和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