簡體   English   中英

有比雙解析字符串更好的方法嗎?

[英]Is there a better way than double parsing the string?

我正在解析iptables的日志文件,以查找源IP。 為此,我使用了re.findall兩個實例,一個實例用於查找“ SRC = xxxx”,另一個實例用於實際獲取IP。

for line in iptables:
    src = re.findall('SRC=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', line)
    ip = re.findall('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', src)

有沒有更好的方法來達到相同的結果? 也就是說,僅獲得SRC IP。

對於我現在想做的事情來說,這確實無關緊要,但是我想知道是否存在更好的方法來實現相同的未來開發。

您應該將IP部分歸為一組,即放在括號內。 這樣,您可以search一個匹配項並獲得該匹配項內的group

>>> line = "SRC=127.0.0.1"
>>> m = re.search(r'SRC=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', line)
>>> m.group(0)
'SRC=127.0.0.1'
>>> m.group(1)
'127.0.0.1'

在這里, group(0)是整個匹配項, group(1)是第一個()包含的部分,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM