import os,re
def test():
list = re.findall(r'(255\.){2}','255.255.252.255.255.12')
print list
if __name__ == '__main__':
test()
輸出:?「[ '255', '255']」正則表達式輸出不正確
何不【255.255,255.255】
的mactch對象應是「 255.255「
如何獲得正確的輸出結果?
import os,re
def test():
list = re.findall(r'(255\.){2}','255.255.252.255.255.12')
print list
if __name__ == '__main__':
test()
輸出:?「[ '255', '255']」正則表達式輸出不正確
何不【255.255,255.255】
的mactch對象應是「 255.255「
如何獲得正確的輸出結果?
嗯,不完全。首先,您需要一個非捕獲組 - 您在那裏的捕獲組將僅捕獲'255.',並將其用作re.findall
的輸出。
實施例:
re.findall(r'(?:255\.){2}', '255.255.252.255.255.12')
的(:)構建體是非捕獲組 - 並且沒有任何捕獲組,re.findall返回整個匹配的字符串?。
請注意,這實際上不會返回['255.255', '255.255']
- 它實際上會返回['255.255.', '255.255.']
。
在你的正則表達式中,你只捕獲了第一個255.
。你需要用你想在一個捕獲組捕捉到的一切:
>>> re.findall(r'((?:255\.){2})','255.255.252.255.255.12')
['255.255.', '255.255.']
(?:...)
是一個非捕獲組。它基本上可以讓你分組的東西,而不會讓他們顯示爲一個捕獲的組。