2013-05-29 58 views
0

這個正則表達式的含義:(\d+).*? - 將一組數字分組,然後採取任何後來發生的事情(最多隻有一次發生,除了換行符)?正則表達式的含義Python

有什麼區別:(\d+) and [\d]+

+0

第一個是一個組,第二個不是。 – njzk2

回答

2

儘可能多的數字(至少1),然後儘可能少的字符(除了換行符)。非貪婪限定符(?)並沒有真正的幫助,除非你在其後的模式中有其餘的模式,否則它將盡可能少匹配,在這種情況下,總是0

>>> import re 
>>> re.match(r'(\d+).*?', '123').group() 
'123' 
>>> re.match(r'(\d+).*?', '123abc').group() 
'123' 

(\d+)[\d]+之間的區別是,前者羣體,後者則沒有。然而,([\d]+)將是等同的。

>>> re.match(r'(\d+)', '123abc').groups() 
('123',) 
>>> re.match(r'[\d]+', '123abc').groups() 
() 
+0

這是表達式:'(\ d +)。*?(\ S *)',它是否與任何非白色字符(在一個組中)至少有一次匹配,所以如果我有「5000個球」 '會在組1和組[2]中的[空白]球? –

+0

@JamesHallen親身體驗 – jamylak

+0

@JamesHallen你爲什麼不試試?它給出了'('5000','')'。 '。*?'匹配空字符串,因爲它不是貪婪的,'\ S *'匹配空字符串,因爲下一個字符是空格。 –

0
(\d)+ One or more occurance of digits, 
.* followed by any characters, 
? lazy operator i.e. return the minimum match. 
+0

有人可以解密這種模式嗎? \ d +(?:\。\ d *)? – Tengis

0

group1將至少有一個數字,group0將包含group1並可能包含其他字符但不一定。

編輯回答編輯的問題:AFAIK在分組之外的其他2應該沒有區別。