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'

 

 

  

 

posted @ 2018-05-10 10:27  十七楼的羊  阅读(114)  评论(0编辑  收藏  举报