python正则表达式

正则表达式

1.什么是正则表达式

  • 正则表达式是独立于然和一门语言的技术,不依赖其他语言的
  • 本质上是一个字符串,只不过有些字符被赋予特殊的含义,可以让我们使用该字符串对其他字符串进行查找,匹配,切割,替换的操作

2.正则表达式的实现

import re
res1`= re.findall(正则表达式,需要备被操作的字符)

3.写正则表达式的流程

  • 有大量的文本
  • 寻找规律
  • 根据过滤和正则语法编写正则表达式

4.正则表达式的语法

4.1 字符相关的语法

  • 固定的文本字符串本身其实就是一个正则表达式
    • 注:字符串前r的作用是防止字符转义的
import re
text= '大家好我是lowreed 请叫我lowreed'
res = re.findall(r'lowreed',text)
print(res) #['lowreed', 'lowreed']
  • 包含字符[] 判读包含某一个
import re
text= '大家好我是lowreedba 请叫我lowreedab'
res = re.findall(r'lowreed[a]',text)
print(res) # ['lowreeda']
  • 含有特殊字符[0-9] , [a-z]
import re
text= '大家好我是lowreedba 请叫我lowreedab'
res = re.findall(r'lowreed[a-z]',text)
print(res) #['lowreedb', 'lowreeda']
#匹配a-z中的字符
  • \d表示数字0-9任意一个
  • {n} n表示紧跟着大括号的符号出现了多少次
  • {n,} 表示匹配n个及n个以上
  • {n,m}n表示最小匹配次数, m表示最大匹配次数
text= '大家好我是lowreed6666 请叫我lowreed666 我不是lowreed66'
#匹配字符后数字为3-4个
res = re.findall(r'lowreed\d{3,4}',text)
print(res) #['lowreed6666', 'lowreed666']
  • 表示数量

    • ? 表示出现了0次或者1次
    • +表示出现了1次或者n次
    • *表示出现了0次或者n次
  • \w 大写字母 数字下划线 汉字

  • \W除了大小写字母 数字下划线, 匹配其他字符

  • .表示任意字符

import re
text= '大家好我是lowreed6666@@ 请叫我lowreed666** 我不是lowreed66中国'
res = re.findall(r'lowreed\w*',text)
print(res) #['lowreed6666', 'lowreed666', 'lowreed66中国']


匹配原身字符.的方式: 可以加\字符

4.2正则表达式使用的注意事项

  • 在使用数量相关语法的正则情况下,默认python使用的是贪婪匹配

4.3 正则进阶使用

  • ()分组
import re
text= '341234200001011234 13812345678'
res= re.findall(r'(34\d{4}(\d{4})\d*)',text)
print(res) #[('341234200001011234', '2000')]
#单独的去出身份证号码, 身份证的上出身年份

import re
text= '1234@qq.com 1234@163.com 1234@1@3.com'
res= re.findall(r'(\w*@(qq|163).com)',text)
print(res)#[('1234@qq.com', 'qq'), ('1234@163.com', '163')]
  • ^以XXX开头匹配
  • $以XXX结尾匹配

4.4 re的模块函数

  • findall()在大字符串中查找所有符合正则表达的小串,返回一个符合结果的列表

  • search()从左向右匹配,智慧匹配一次

  • match()从左向右,从第一个字符开始匹配,如果第一个字符不符合,停止匹配

  • split() 以正则的形式切割字符串

import re
text= '1234@qq.com 1234@163.com 1234@1@3.com'
res= re.split(r'@qq',text)
print(res) #['1234', '.com 1234@163.com 1234@1@3.com']
posted @ 2024-01-15 21:36  low-reed  阅读(8)  评论(0)    收藏  举报