千家信息网

Python正则函数怎么使用

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍"Python正则函数怎么使用",在日常操作中,相信很多人在Python正则函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python正则函
千家信息网最后更新 2025年11月12日Python正则函数怎么使用

这篇文章主要介绍"Python正则函数怎么使用",在日常操作中,相信很多人在Python正则函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python正则函数怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 反向引用_命名分组

# ### 反向引用import restrvar = "
明天又要休息了
"obj = re.search("<(.*?)>(.*?)<(.*?)>",strvar)print(obj)# 获取匹配到的内容res1 = obj.group()print(res1)# 获取分组里的内容res2 = obj.groups()print(res2)# 反向引用的语法 \1把第一个括号里面匹配到的内容在引用一次obj = re.search(r"<(.*?)>(.*?)",strvar)print(obj)print(obj.group())print(obj.groups())strvar = " z3d4pzd a1b2cab "obj = re.search(r"(.*?)\d(.*?)\d(.*?)\1\2",strvar)print(obj)print(obj.group())print(obj.groups())# ### 命名分组"""3) (?P<组名>正则表达式) 给这个组起一个名字4) (?P=组名) 引用之前组的名字,把该组名匹配到的内容放到当前位置"""# 写法一strvar = " z3d4pzd a1b2cab "obj = re.search(r"(?P.*?)\d(?P.*?)\d(?P.*?)\1\2",strvar)print(obj)print(obj.group())# 写法二strvar = " z3d4pzd a1b2cab "obj = re.search(r"(?P.*?)\d(?P.*?)\d(?P.*?)(?P=tag1)(?P=tag2)",strvar)print(obj)print(obj.group())

2. 正则函数

# ### 正则函数import re# search   通过正则匹配出第一个对象返回,通过group取出对象中的值strvar = "3+4 6*4"obj = re.search(r"(\d+[+*]\d+)",strvar)print(obj)# 获取匹配到的内容print(obj.group())# 获取分组当中的内容 (返回元组)print(obj.groups())# match    验证用户输入内容 (了解)"""search在正则表达式的前面加上^ 等价于 match ,其他用法上一模一样"""strvar = "a17366668888"strvar = "17366668888"# obj = re.search(r"^\d+",strvar)# obj = re.match(r"\d+",strvar)# print(obj.group())print(obj)# split    切割strvar = "alex|wusir_xboyww@risky"lst = re.split("[|_@]",strvar)print(lst)strvar = "alex2341273894wusir234234xboyww11111risky"lst = re.split("\d+",strvar)print(lst)# sub      替换 strvar = "alex|wusir_xboyww@risky""""strvar = strvar.replace("|","&")strvar = strvar.replace("_","&")strvar = strvar.replace("@","&")print(strvar)"""# sub(正则,替换的字符,原字符串[,替换的次数])res = re.sub("[|_@]","&",strvar)res = re.sub("[|_@]","&",strvar,1)print(res)# subn     替换  (用法上与sub相同,只是返回值不同)res = re.subn("[|_@]","&",strvar)res = re.subn("[|_@]","&",strvar,2)print(res) # res = re.sub("[|_@]","&",strvar)# ('alex&wusir&xboyww@risky', 2)# finditer 匹配字符串中相应内容,返回迭代器"""返回的是迭代器,迭代器中包含了对象 对象.group来获取匹配到的值"""from collections import Iterator, Iterablestrvar = "sdf23647fdgdfg()*()*23423423"it = re.finditer("\d+",strvar)print(isinstance(it,Iterator))for obj in it:        print(obj.group())# compile  指定一个统一的匹配规则"""正常情况下,正则表达式编译一次,执行一次为了避免反复编译,节省时间空间,可以使用compile统一规则编译一次,终身受益"""strvar = "asdfs234sdf234"pattern = re.compile("\d+")print("<===>")obj = pattern.search(strvar)print(obj.group())lst = pattern.findall(strvar)print(lst)# 修饰符 # re.I 使匹配对大小写不敏感strvar = "

大标题

"pattern = re.compile("

(.*?)

" , flags=re.I)obj = pattern.search(strvar)print(obj.group())# re.M 使每一行都能够单独匹配(多行匹配),影响 ^ 和 $"""单行独立匹配,而不是整体匹配"""strvar = """

111

222333"""pattern = re.compile("^<.*?>(?:.*?)<.*?>$" , flags=re.M)lst = pattern.findall(strvar)print(lst)# re.S 使 . 匹配包括换行在内的所有字符strvar = """givesdfsdfmefive"""# 多个修饰符一起使用通过|拼接pattern = re.compile(".*?mefive" , flags = re.S|re.I|re.M )obj = pattern.search(strvar)print(obj.group())

小提示:

爬虫爬数据的时候用finditer,数据太大,用迭代器存strvar = """

111

222333"""pattern = re.compile("^<.*?>(?:.*?)<.*?>$")lst = pattern.findall(strvar)print(lst) # 这里的结果为[] 因为.不匹配换行符,所以不会返回结果pattern = re.compile("^<.*?>(?:.*?)<.*?>$",flags=re.M) 这里就是一行的一行的匹配了不会用for i in找思路 不会用.*?找思路

到此,关于"Python正则函数怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0