我是python正則表達式的新手,所以我將不勝感激。提前致謝。解析一個字符串以提取具有字母開頭字符和未知長度的分隔單元
我有這個 string = "Restaurant_Review-g503927-d3864736-Reviews"
我想提取 'g503927',並從中 'd3864736'。
我知道你可以使用re.match(pattern, string, flags=0)
但不知道如何寫正則表達式吧。 PLZ幫助
我是python正則表達式的新手,所以我將不勝感激。提前致謝。解析一個字符串以提取具有字母開頭字符和未知長度的分隔單元
我有這個 string = "Restaurant_Review-g503927-d3864736-Reviews"
我想提取 'g503927',並從中 'd3864736'。
我知道你可以使用re.match(pattern, string, flags=0)
但不知道如何寫正則表達式吧。 PLZ幫助
使用re.findall:
>>> s = "Restaurant_Review-g503927-d3864736-Reviews"
>>> re.findall('[a-z]\d+', s)
['g503927', 'd3864736']
[a-z]\d+
小寫字母后面的數字相匹配。
這應該工作
import re
pattern = re.compile("[a-z][0-9]+")
沒有必要使用正則表達式...使用split()
方法:
s = "Restaurant_Review-g503927-d3864736-Reviews"
print s.split('-')
print s.split('-')[1]
print s.split('-')[2]
更多的信息在這裏:http://docs.python.org/2/library/stdtypes.html#str.split
非正則表達式的解決方案,但它取決於什麼是分隔單位,在這裏我假設它是一個-
:
s = "Restaurant_Review-g503927-d3864736-Reviews"
outputs = [i for i in s.split('-') if i[0].isalpha() and i[1:].isdigit()]
你的意思是's.split(' - ')'?你也可以使用'i [:1] .isalpha()',所以沒有空字符串的索引錯誤。 –
如果他的輸出字符串只在第一個字符上有'alpha',他爲什麼還需要'i [1:]。isalpha'? – alvas
我用'我[:1] .isalpha()'不'我[1:]。isalpha()'。 –
展開說明+表示它在它之前查找「1個或更多」標記。這個正則表達式還假定這個字母是小寫字母(它在你的例子中看起來像)。如果它永遠不會不起作用。如果OP要匹配大寫字母,可以將字符集更改爲[A-Za-z]。最後一點要注意的是,如果有的情況下可能會有一個小寫字母,然後在名字的其他地方加個'(?<= - )'到該正則表達式的前面。 – JDiPierro
'\ b [a-z] \ d +'怎麼樣? – falsetru