[英]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.