文章目录
介绍
compile 生成正则表达式对象
- 介绍
- 生成正则表达式对象,方便以后多次调用
- 返回类型是对象
- 语法
regex = compile(pattern,flags = 0)
- 参数
参数 说明 pattern 正则表达式 flags 功能标志位,增强正则表达式的功能 - 示例
import re pattern = "[a-z]{1,}" re_obj = re.compile(pattern,flags = 0) result = re_obj.search("这些元素其实是glam rock, 然后加这种bling的感觉") print("匹配首次:",result.group()) result = re_obj.findall("这些元素其实是glam rock, 然后加这种bling的感觉") print("匹配所有:",result)
match 匹配函数
match 用法同search,区别为match仅从开头开始匹配
search 搜索函数
介绍
- 介绍
- 匹配全体字符串,如果包括子串,则匹配成功,返回Match对象,匹配失败则返回None,若要完全匹配,子串以’$'结尾
- 如果有多个被匹配上,只返回第一个
- 返回的类型是对象
- 语法
re.search(pattern,string[,flags])
- pattern: 子串,要匹配的子串
- string: 字符串,在此字符串中匹配子串(是正则表达式)
- 示例
string = 'interface Ethernet4/32 is up' pattern = r'interface\s+Ethernet\d+/\d+' interface_search = re.search(pattern,string) print(interface_search)
实例
获取整体的匹配
- 对象.group()和对象.group(0)返回的都是匹配的整体
- 实例
line = '18:20 interface Ehternet1/5 is up' intf_pattern = r'interface\s+Ehternet\d+/\d+' interface_search = re.search(intf_pattern, line) if interface_search: # 获取整体的匹配 intf = interface_search.group() print('intf in group():', intf) # 同上,获取整体的匹配 intf = interface_search.group(0) print('intf in group(0):', intf)
子串的提取
- 介绍
- 使用()区别子串
- 整体 对象.group()和对象.group(0)
- 所有子串 对象.groups()
- 第n个子串 对象.groups(n)
- 示例
line = '18:20 interface Ehternet1/5 is up' intf_pattern = r'interface\s+Ehternet(\d+)/(\d+)' interface_search = re.search(intf_pattern, line) if interface_search: # 获取整体的匹配 intf = interface_search.group() print('intf in group():', intf) # 同上,获取整体的匹配 intf = interface_search.group(0) print('intf in group(0):', intf) # 获取所有子串 groups() intf = interface_search.groups() print('intf in groups():', intf) # 获取指定index的子串 groups(index) 注意index不要越界 intf = interface_search.group(1) print('intf index in groups(1):', intf)