格式

  1. import re
  2. str="你好啊123456我是第一"
  3. re_obj=re.compile('\w{3}(\d{4})')
  4. print(re_obj)
  5. res=re_obj.match(str)
  6. print(res.group(1))
  7. print(res.groups())
  8. #group 取元组集合,也可以指定下标,如果匹配失败调用group会报错
  9. #groups 只能取元组集合

常用的正则字符

re 正则表达式 - 图1

re 正则表达式 - 图2

re 正则表达式 - 图3

re 正则表达式 - 图4

\ 转义字符

  1. #python中路径写法为 c:\\a.txt
  2. \n #换行
  3. \t #table制表符
  4. r'正则表达式' #不转义正则中的\
  5. 例:
  6. re.meatch(r'c:\\a.txt','c:\\a.txt').group()

\1 分组使用

  1. import re
  2. str="<html><h1>你好啊</h1></html>"
  3. res=re.match(r'<(.*)><(.*)>(.*)</\2></\1>',str)
  4. print(res.group())

?P 别名使用

  1. import re
  2. str="<html><h1>你好啊</h1></html>"
  3. res=re.match(r'<(?P<name1>.*)><(?P<name2>.*)>(.*)</(?P=name2)></(?P=name1)>',str)
  4. print(res.group())

search 全文匹配一次 元组返回

  1. import re
  2. str="<html><h1>你好啊</h1></html>"
  3. res=re.search('你好',str) #全文匹配一次匹配到就返回
  4. print(res) #返回的是一个元组(你好,123,42,我)

findall 全文匹配所有 列表返回

  1. import re
  2. str="你好啊我啊123456我是第一"
  3. res=re.findall("我.",str) #全文匹配所有符合条件的关键字
  4. print(res) #返回的是一个列表['你好',123,42,'我']

split 分割 列表返回

re 正则表达式 - 图5

  1. import re
  2. str="hello world I Love Python"
  3. res=re.split(" ",str) #以列表的方式展示结果
  4. print(res)

sub 匹配并替换

re 正则表达式 - 图6

  1. import re
  2. str="hello world"
  3. res=re.sub("h","H",str) #全文搜索替换
  4. print(res)
  5. res=re.subn("h","H",str) #以元组的方式展示结果和替换次数
  6. print(res)

? 非贪婪模式

一般.*?配合使用就相当于取前后文本中间的内容

  1. #贪婪:全文匹配符合条件的尽量多的数据
  2. #非贪婪:全文匹配符合条件的尽量少的数据
  3. import re
  4. str="aacbacba"
  5. reobj=re.compile("c.*a") #贪婪模式
  6. res=reobj.search(str)
  7. print(res.group())
  8. reobj=re.compile("c.*?a") #非贪婪模式
  9. res=reobj.search(str)
  10. print(res.group())