本篇博客主要介绍re模块。
1)re模块中的match
作用:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
返回值:成功匹配,返回值为匹配符对象,获取具体的值用 group(num) 或 groups() 匹配对象函数来获取匹配表达式。
如何使用:re.match(pattern, string, flags=0)
pattern为匹配的字符串或者正则表达式 string为要匹配的字符串 flags为标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。例如 re.I 为对大小写不敏感。
2)re模块中的search
作用:从整个字符串中去查找要寻找的字符,这是与match最大的不同。
返回值:成功匹配,返回值为匹配符对象,获取具体的值用 group(num) 或 groups() 匹配对象函数来获取匹配表达式。
如何使用:
re.search(pattern, string, flags=0)
3)re模块中额findall
作用:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。说明一下,这里直接返回的是list,
返回值:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
如何使用:①:与compile一起使用:
findall(string[, pos[, endpos]])
- string : 待匹配的字符串或正则化表达式。
- pos : 可选参数,指定字符串的起始位置,默认为 0。
- endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
举例:
pattern = re.compile(r'\d+') # 查找数字
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10)
print(result1)
print(result2)
结果为:
['123', '456'] ['88', '12']
②:单独使用:
arr = re.findall(r'= \b.+\b', ln) 其中ln代表要查找的字符串,返回所有匹配的结果,并以list形式保存
注意: match 和 search 是匹配一次; findall 匹配所有。存储到list中。
正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
修饰符 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
附录:Python支持的正则表达式元字符和语法:
参考:http://www.runoob.com/python/python-reg-expressions.html#flags
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html