python 正则实例
2017-11-15 16:27
155 查看
首先熟悉点正则里面的一些知识
.* 代表匹配任意字符,贪婪模式,就是尽可能的向后匹配
.*? 这个能阻止贪婪模式
re 修饰符:
修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
实例:
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
{‘message’: “File ‘/usr/sbin/keepalived’ seems to be deleted”, ‘program’: ‘abrt[16849]:’, ‘hostname’: ‘geenk03’, ‘logtime’: ‘Nov 15 10:24:57’}
[root@geenk03 opt]# ./get_ip.py
{‘eth0’: [‘192.168.1.203’, ‘HWaddr 1C:6F:65:2A:BF:16’]}
.* 代表匹配任意字符,贪婪模式,就是尽可能的向后匹配
.*? 这个能阻止贪婪模式
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 = '<h1> hello word </h1>' In [4]: re.findall(r'<.*>',ss) Out[4]: ['<h1> hello word </h1>'] #只匹配标签 In [6]: re.findall(r'<.*?>',ss) Out[6]: ['<h1>', '</h1>']
实例:
匹配linux /var/log/message下面的日志
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<logtime>\w+\s+\d+\s[\d+:]+)\s(?P<hostname>\w+)\s(?P<program>\w+(\[\d+\])?:)\s(?P<message>.*)') 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
{‘message’: “File ‘/usr/sbin/keepalived’ seems to be deleted”, ‘program’: ‘abrt[16849]:’, ‘hostname’: ‘geenk03’, ‘logtime’: ‘Nov 15 10:24:57’}
利用正则收集linux系统ip
[root@geenk03 opt]# cat get_ip.py #!/usr/bin/env python import re from subprocess import Popen,PIPE def getIfconfig(): 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')] def parseIfconfig(data): re_devname = re.compile(r'(br|eth|em|virbr|bond)[\d]+',re.M) re_mac = re.compile(r'HWaddr ([\w:]{17})',re.M) re_ip = re.compile(r'inet addr:([\d\.]{7,15})',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 {devname: [ip,mac]} if __name__ == '__main__': data = getIfconfig() for i in data: print parseIfconfig(i)
[root@geenk03 opt]# ./get_ip.py
{‘eth0’: [‘192.168.1.203’, ‘HWaddr 1C:6F:65:2A:BF:16’]}
相关文章推荐
- python 根据正则表达式提取指定的内容实例详解
- 正则表达式基础——以Python爬虫为实例
- python正则表达式--基本用法和函数(简单实例)
- Python正则表达式实例演练
- python类库31[正则表达式匹配实例]
- Python爬虫之正则表达式基本用法实例分析
- Python正则表达式如何进行字符串替换实例
- python的re正则表达式实例代码
- Python: 正则表达式实例透析
- python里使用正则表达式的非捕获模式实例二
- Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)
- python 运用requests库 以及 正则表达式 爬取小说实例以及心得
- Python正则表达式使用实例
- python正则表达式使用实例-替换字符串HTML标签
- python里使用正则表达式的组嵌套实例详解
- python 根据正则表达式提取指定的内容实例详解
- python正则捕获日志解析实例
- Python正则简单实例分析
- python正则实例
- [python爬虫] 正则表达式使用技巧及爬取个人博客实例