2015-12-29 28 views
0

我的正則表達式:https://regex101.com/r/oF7pM8/1 我得到http://joxi.ru/J2b54KaI40bbwm 但是,我已經讓所有「數」的值(所有的數字),他們是在陣列中「民」 我一定要得到它: name = house num = [3 4 5 6 7 8 9] 這是怎麼回事? p.s .: python正則表達式正則表達式匹配的子模式的子陣值

模式必須單獨查找所有數字(數組)。

+0

的''使得重複偷懶,這就是爲什麼它只是相匹配嗎?數字。檢查[更新版本](https://regex101.com/r/oF7pM8/2) – ndn

+0

然後找到最後一個數字,不是全部。我需要所有。 –

回答

0

(?P<name>house)(?:\s(?P<num>(\d\s+)+)\d?)+?是否可以完成這項工作?

我添加到您的原粗體:(?Phouse)(?:\ S(P (\ d \ S +)+\ d?)+?

+1

此模式不適用,因爲它沒有單獨查找所有數字(數組)。 –

+0

請將此要求添加到您的帖子中,我將刪除我的答案。 – Veverke

0

然後找到最後一個數字,不是全部。我需要所有。

re.match發現所有,但回報只有最後一個。既然你有比賽無論如何進行後處理,以將其分配給Python的變量namenum,使圖案簡單:

import re 
test_string = 'house 3 44 555 6666 777 88 9' 
m = re.match(r'(house)((\s\d+)+)', test_string) 
name = m.group(1) 
num = [int(s) for s in m.group(2).split()]