2013-08-05 30 views

回答

2

使用re.findall

>>> s = "Restaurant_Review-g503927-d3864736-Reviews" 
>>> re.findall('[a-z]\d+', s) 
['g503927', 'd3864736'] 

[a-z]\d+小寫字母后面的數字相匹配。

+0

展開說明+表示它在它之前查找「1個或更多」標記。這個正則表達式還假定這個字母是小寫字母(它在你的例子中看起來像)。如果它永遠不會不起作用。如果OP要匹配大寫字母,可以將字符集更改爲[A-Za-z]。最後一點要注意的是,如果有的情況下可能會有一個小寫字母,然後在名字的其他地方加個'(?<= - )'到該正則表達式的前面。 – JDiPierro

+0

'\ b [a-z] \ d +'怎麼樣? – falsetru

0

這應該工作

import re 
pattern = re.compile("[a-z][0-9]+") 
-1

沒有必要使用正則表達式...使用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

+0

如果'x2352'出現在'str.split()'中的另一個元素中,則不會起作用 – alvas

+0

我不關注.. x2352從哪裏來? – msturdy

+0

那一定是他的延伸! – sureshvv

0

非正則表達式的解決方案,但它取決於什麼是分隔單位,在這裏我假設它是一個-

s = "Restaurant_Review-g503927-d3864736-Reviews" 
outputs = [i for i in s.split('-') if i[0].isalpha() and i[1:].isdigit()] 
+1

你的意思是's.split(' - ')'?你也可以使用'i [:1] .isalpha()',所以沒有空字符串的索引錯誤。 –

+0

如果他的輸出字符串只在第一個字符上有'alpha',他爲什麼還需要'i [1:]。isalpha'? – alvas

+0

我用'我[:1] .isalpha()'不'我[1:]。isalpha()'。 –

相關問題