正規表示式分組與python收集系統ip

2021-08-10 20:47:56 字數 2252 閱讀 2277

.* 代表匹配任意字元,貪婪模式,就是盡可能的向後匹配

.*? 這個能阻止貪婪模式

re 修飾符:

修飾符 描述

re.i 使匹配對大小寫不敏感

re.l 做本地化識別(locale-aware)匹配

re.m 多行匹配,影響 ^ 和 $

re.s 使 . 匹配包括換行在內的所有字元

re.u 根據unicode字符集解析字元。這個標誌影響 \w, \w, \b, \b.

re.x 該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解。

import re

in [1]: ss = ''

in [4]: re.findall(r'<.*>',ss)

out[4]: ['']

#只匹配標籤

in [6]: re.findall(r'<.*?>',ss)

out[6]: ['']

例項:

import re

#無名分組

reg_syslog=re.compile(r'\w+\s+\d+\s[\d+:]+\s\w+\s\w+(\[\d+\])?:\s.*')

#有名分組,(<?p自定義名字》)

reg_syslog1=re.compile(r'(?p\w+\s+\d+\s[\d+:]+)\s(?p\w+)\s(?p\w+(\[\d+\])?:)\s(?p.*)')

ss = "nov 15 10:24:57 geenk03 abrt[16849]: file '/usr/sbin/keepalived' seems to be deleted"

s=reg_syslog.search(ss)

s1=reg_syslog1.search(ss)

print s.group(0)

print s1.group(0)

#有名分組可以方便將匹配資訊儲存在字典中

print s1.groupdict(0)

nov 15 10:24:57 geenk03 abrt[16849]: file 『/usr/sbin/keepalived』 seems to be deleted

nov 15 10:24:57 geenk03 abrt[16849]: file 『/usr/sbin/keepalived』 seems to be deleted

[root@geenk03 opt]# cat get_ip.py

#!/usr/bin/env python

import re

from subprocess import popen,pipe

defgetifconfig

(): p = popen(['ifconfig'],stdout=pipe)

data = p.stdout.read().split('\n\n')

return [i for i in data if i and

not i.startswith('lo')]

defparseifconfig

(data):

re_devname = re.compile(r'(br|eth|em|virbr|bond)[\d]+',re.m)

re_mac = re.compile(r'hwaddr ([\w:])',re.m)

re_ip = re.compile(r'inet addr:([\d\.])',re.m)

devname = re_devname.search(data)

if devname:

devname = devname.group(0)

else:

devname =''

mac = re_mac.search(data)

if mac:

mac = mac.group()

else:

mac = ''

ip = re_ip.search(data)

if ip:

ip = ip.group(1)

else:

ip = ''

return

if __name__ == '__main__':

data = getifconfig()

for i in data:

print parseifconfig(i)

[root@geenk03 opt]# ./get_ip.py

Python 正規表示式(分組)

分組就是用一對圓括號 括起來的正規表示式,匹配出的內容就表示乙個分組。從正規表示式的左邊開始看,看到的第乙個左括號 表示第乙個分組,第二個表示第二個分組,依次類推,需要注意的是,有乙個隱含的全域性分組 就是0 就是整個正規表示式。分完組以後,要想獲得某個分組的內容,直接使用group num 和gr...

正規表示式 分組

正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...

分組 正規表示式

在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。d d這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。當然,用這個表示式簡單匹配成功後可以在利用 ph...