python 正则表达式
基本上每个语言都可以操作正则表达式,正则表达式强大文本匹配能力对数据处理有着极大地优势。
python 也有正则表达式的模块(re 模块),自带正则表达式引擎。
正则表达式工作流程:
1,首先根据表达式产生表达式对象,对象包括如何匹配数据信息
2,在将对象匹配文本,果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3,返回我们所需要的内容(分组,索引,以及文本)。
''' import re 导入re模块,可以使用python正则 re.match(r('正则', '数据')) 返回的是对象 re.match(r('正则'), ('数据')).group() 调用group() 方法返回匹配的数据 match() 是从开头匹配,第一个字母匹配不上就会停止匹配,抛出异常 re.search(r'正则', '数据').group() 一直寻找下去,直至返回匹配到的内容 re.findall(r'正则','数据') 返回的是列表,匹配所有的数据,都会返回。 re.sub(r"\d+", '998', "python = 997") 将匹配到的数据替换为'998' re.search(r'hello[ab]', 'helloworld') [] 表示匹配一个字符, 如果下一个字符是a或者b就会返回, 不是就会抛异常. re.search(r'hello[0-9]', 'helli1world') 表示匹配一个字符,是数字 [a - z] 表示匹配一个字符必须是小写 [A - Z] 表示匹配必须是大写 re.search(r'hello[^a-z]', 'helloworld') ^ 表示取反, 即不属于a - z
. 表示任意一个字符,除了'\n' + 表示匹配1次或者多次,至少一次 .* 表示匹配任意个,*前面是量词。 \d 表示匹配数字,一个数字 \d{3} 匹配三个数字 \d + 表示匹配至少一个数字 \s 表示匹配空白 不是空格 \w 等价于[a - zA - Z1 - 9](三者连续写在一起,表示与的关系) 在pthon3 之中还包括汉字 \w {4} 匹配四个字符\w + 表示一个 \w{4, 10} 表示匹配4 - 20个字符 {m,n} 匹配前一个字符,出现m-n次 注意理解 ^ 表示开始()第一个字符开始 $ 表示结束 match默认带有 r 这是少写'\',其余的改转义,都要转义 '''
python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
非贪婪则相反,总是尝试匹配尽可能少的字符。
在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪
re.match(r"aa(\d+?)","aa2343ddd").group(1) #返回'2343' re.match(r"aa(\d+?)","aa2343ddd").group(1) #返回 '2'