我試圖解析readelf
輸出:爲什麼這個正則表達式不捕獲請求的組?
import re
o = ' EXIDX 0x000590 0x002c0590 0x002c0590 0x00008 0x00008 R 0x4'
re.findall(r'^ \s+ (\w+) \s+ (?:(0x [\da-f]+)\s+)+', o, re.VERBOSE) # (1)
# [('EXIDX', '0x00008')]
爲什麼只有一個十六進制數被抓獲?我預計
re.findall(r'^ \s+ (\w+) \s+ (?:(0x [\da-f]+)\s+)+', o, re.VERBOSE)
# [('EXIDX', '0x000590', '0x002c0590', '0x002c0590', '0x00008', '0x00008')]
當我想這個RE相反,它給在僅符合第一號至少可以理解的結果:
re.findall(r'^ \s+ (\w+) \s+ (0x [\da-f]+)\s+', oo, re.VERBOSE)
# [('EXIDX', '0x000590')]
我不知道爲什麼我只得到了最後一個( ?)編號與RE(1)
你的RE結束只能用空格捕獲最後一個數字 –