2015-04-06 99 views
0

这之后,Python的正则表达式分隔的数字是我使用正则表达式:破折号

date = "1981-89" 
date = re.findall(r'\d+', date) 

如果日期是1981年至1989年这将返回[1981],[89]。添加到正则表达式忽略短划线之后的任何内容(包括短划线本身)是什么?

谢谢!

+0

为什么不只是分割字符串,并采取你所需要的? –

+2

'date.partition(' - ')[0]'比使用Regex更有效率。 – iCodez

+0

嗨,大家好,谢谢你的回应。我正在尝试学习正则表达式。我可以轻松地解析字符串,但我正在尝试学习新的东西。谢谢! –

回答

2

如果需要使用正则表达式,使用match搜索的第一个元素:

re.match(r'(\d+)', date).group() # matching using parenthesis in regex 
+0

我同意这一点。在我看来,英国格拉德要求第一个匹配的项目,因此应该使用'match'或'search'而不是'findall'。 – bmhkim

+0

@bmhkim是的,我从'findall'变成了'match'。从来没有真正理解'match'和'search'之间的区别。 –

0

你可以用re.sub其删除:

>>> re.sub(r'-.*','',date) 
'1981' 
0

我该怎么加正则表达式忽略短划线之后的任何东西,包括破折号本身?

你可以使用这个表达式:

date = "1981-89" 
date = re.match(r'\d+(?=-)', date).group() 
// 1981 

(?=-)是在先行是确保我们只匹配后跟连字符数。