我是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