正则表达式:是形成搜索模式的字符序列
作用:检查字符串是否包含指定的搜索模式。
python提供内置的re包来处理正则表达式
一、regex常用函数
findall | 返回包含所有匹配项的列表 |
search | 如果字符串中的任意位置存在匹配,则返回 Match 对象 |
split | 返回在每次匹配时拆分字符串的列表 |
sub | 用字符串替换一个或多个匹配项 |
二、10个元字符
[] | 一组字符 | () | 捕获和分组 |
\ | 示意特殊序列(也可用于转义特殊字符) | . | 任何字符(换行符除外) |
^ | 起始于 | $ | 结束于 |
* | 零次或多次出现 | + | 一次或多次出现 |
{} | 指定的出现次数 | | | 两者任一 |
三、10个特殊序列
\A | 整个字符串的开头 | \Z | 整个字符串的结尾 |
\b | \bword 单词的开头,word\b 单词的结尾 | \B | 取\b的补集 |
\d | 返回字符串包含数字的匹配项(数字 0-9) | \D | 取\d的补集 |
\s | 返回字符串包含空白字符的匹配项 | \S | 取\s的补集 |
\w | 返回一个匹配项,其中字符串包含任何单词字符 (从 a 到 Z 的字符,从 0 到 9 的数字和下划线 _ 字符) | \W | 取\w的补集 |
四、举例说明
import re
str='China is a great country'
lstr=re.findall('a',str)#返回所有匹配项的列表
print(lstr) #['a', 'a', 'a']
lstr2=re.split('\s',str,1)#用匹配到的空白字符 ,做分割--可指定匹配次数
print(lstr2) #['China', 'is', 'a', 'great', 'country']
lstr3=re.sub('\s','-',str)#将匹配的替换为指定字符
print(lstr3) #China-is-a-great-country
#match对象--包含有关搜索和结果信息的对象
mat=re.search(r'\bC\w+',str)#函数搜索字符串中的匹配项,如果存在匹配则返回 Match 对象。
mat2=re.search(r'\bx\w+',str)#函数搜索字符串中的匹配项,如果存在匹配则返回 Match 对象。
print(mat.group()) #group 返回匹配项---China
print(mat2) #无匹配项 返回 None 而不是 Match 对象---None
print(mat.span()) #span返回匹配项的--开始和结束index tuple---(0, 5)
print(mat.start()) #start返回匹配项的--第一个index--- 0
print(mat.string) #string返回被匹配的整个str---China is a great country