1
假設我有以下字符串:瞭解蟒蛇正則表達式
out = "someUndefinedGarbageVALUE: 12 34 23 00possiblySomeOtherGarbage"
現在我想解析「12 34 23 00」的價值。在這種情況下,我執行以下操作:
regex = re.compile('VALUE: (\d\d\s?)*')
matches = regex.findall(out)
然而,在這種情況下,我只會越來越:
00
當我upgrage正則表達式一點:
regex = re.compile('VALUE: ((\d\d\s?)*)')
我會得到:
12 34 23 00, 00
我的問題ns:
1)與http://regexpal.com/我看到第一個表達式很好地工作。嘗試自己:
VALUE: (\d\d\s?)*
對
garbageVALUE: 05 03 04garbage
使用Python是向度。我的推理在哪裏錯了?
2)爲什麼第二個表達式恰好捕獲兩組?它應該只捕獲一個
12 34 23 00
或所有可能的變化?
12, 12\s, 12\s34 ...
我知道這是一個貪婪的搜索,但爲什麼正好有兩組被抓到?
你是如何看待這場比賽的?對於第一個正則表達式,執行'regex.search(out).group()'返回VALUE:12 34 23 00''。你期望得到什麼? – msvalkon
在Python中,您正在查看第一個捕獲組的匹配項。 'regexpal.com'顯示整個正則表達式的匹配。當你量化一個捕獲組時,它只捕獲最後一場比賽。 – Barmar
在你的屏幕上試試三個例子>>> >>> re.findall(「aab」,'aabaabaabaa')','''''''''''''' re.findall(「a(a)b」,'aabaabaabaa')'現在改變你的正則表達式爲'r'(VALUE:(\ d \ d \ s?)*)「'你會明白 - 記住當你添加'('')'在正則表達式中,輸出中有一些['groups'](https://docs.python.org/2/library/re.html#re.RegexObject.groups)。 –