2013-08-05 29 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()'。 –

相关问题