python正则表达式re模块语法

时间:2023-01-20 22:35:51

使用字符串匹配实现

对于简单的匹配查找,可以通过字符串匹配实现,比如:查找以”hello”开头的字符串
python正则表达式re模块语法

def find_Hello(filename):
f = open(filename)

for line in f:
if line.startswith('hello'):
print line
f.close()


find_Hello('hello.txt')

此时就可以正确查找出以start开始的字符串了

python中的正则表达式模块

在python中为我们提供了一个正则表达式模块,要使用该模块,必须手动引入该模块

import re

str = 'hello world'
pattern = re.compile(r'hello')
matcher = pattern.match(str)
print matcher.group()
print matcher.string
print matcher.re
print matcher.pos
print matcher.endpos
print matcher.lastindex
print matcher.lastgroup

Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。

  • string: 匹配时使用的文本。
  • re: 匹配时使用的Pattern对象。
  • pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
  • lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
  • group([group1, …]): 获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
  • groups([default]):以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
  • groupdict([default]):返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
  • start([group]): 返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
  • end([group]): 返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
  • span([group]): 返回(start(group), end(group))。
  • expand(template): 将匹配到的分组代入template中然后返回。
#匹配忽略大小写,这里的I表示IGNORECASE
pattern = re.compile(r'hello', re.I)

另外re模块还有其他常用的匹配的方法

# 在一个字符串中查找匹配
re.search(pattern, string, flags)
#找到匹配,返回所有匹配的列表
re.findall(pattern, string, flags)
#将字符串中匹配正则表达式的部分换成其他字符串
re.sub(pattern, repl, string, count, flags)
# 根据匹配分割字符串,返回分割字符串组成的列表
re.split(pattern, string, maxsplit, flags)