簡體   English   中英

在python中使用正則表達式查找IP地址

[英]Finding IP addresses using regular expression in python

我正在嘗試解析TSHARK捕獲的結果

這是我要過濾的行:

Internet Protocol, Src: 10.10.52.250 (10.10.52.250), Dst: 224.0.0.2 (224.0.0.2)

我正在嘗試提取Src和Dst,

這是我要做的代碼:

str(re.search("Src:\s[0-9\.]{7-15}", a, re.I|re.M).group())[5:]
str(re.search("Dst:\s[0-9\.]{7-15}", a, re.I|re.M).group())[5:]

運行此命令時,我一直找不到匹配項,但是當我在正則表達式中使用IP地址的確切長度時,它將起作用。

str(re.search("Src:\s[0-9\.]{9}", a, re.I|re.M).group())[5:]

效果很好。 我該如何解決這個問題?

看看Python regex howto ,那不是{7,15}嗎?

for match in re.finditer(r"\((\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))\b\)", subject):

這應該與任何IPV4 IP地址匹配。 實際IP被捕獲到組1中。

盡管您的正則表達式可能有效,但這很危險,因為999.999.999.999 不是有效的,但可以匹配。

不大好:

text = 'fasga@fas#2*^127.0.0.1tfgws5151'

pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
pattern_re = re.compile(pattern)
ip_address = pattern_re.findall(text)

嘗試使用{7,15}

str(re.search("Src:\s[0-9\.]{7,15}", a, re.I|re.M).group())[5:]
str(re.search("Dst:\s[0-9\.]{7,15}", a, re.I|re.M).group())[5:]

另外,您應該檢查一個組是否首先存在(或try / except ):

groupFound = re.search("Src:\s*[\d\.]{7,15}", a, re.I | re.M)
if groupFound:
    str(groupFound.group())[5:]

# or:

try:
    str(re.search("Src:\s*[\d\.]{7,15}", a, re.I | re.M).group())[5:]
except AttributeError:
    # handle it

暫無
暫無

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

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