2015-04-06 97 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 

(?=-)是在先行是確保我們只匹配後跟連字符數。