栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

正则表达式

Python 更新时间:发布时间: 百科书网 趣学号
一:python中re正则表达的用法

1.match 主要用于校验数据的格式

re.match("规则","str")用来匹配的数据

2.search 查询、获取数据(只要匹配到就停止)

re.search("规则","str")用来匹配的数据

re.group()用来获取匹配的数据:
其中1表示第一个括号里面的内容

a="核酸检测结果"
b=".*(核.*?测).*"
print(re.search(b, a).group(1))
=》核酸检测结果

3.findall 也是查询、获取数据
返回的是列表,跟前两个不一样,不用加group()
re.findall(‘正则’, string, re.S)

a='核酸检测结果:"正常",核酸检测结果:"阴性",核酸检测结果:"阳性",核酸检测结果:"暂无核酸检测结果"。'
result = re.findall('"(.*?)"', a, re.S)
print(result)
=》['正常', '阴性', '阳性', '暂无核酸检测结果']

4.sub 替换数据
re.sub(pattern, repl, string, count=0, flags=0)
参数1:pattern
表示正则中的模式字符串。
参数2:repl
就是replacement,表示被替换的字符串,可以是字符串也可以是函数。
参数3:string
表示要被处理和替换的原始字符串
参数4:count
可选参数,表示是要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会被替换;
参数5:flags
可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0。

new_str = re.sub('d+', '998',  "python = 997, java = 101")
print(new_str)
=》python = 998, java = 998

批量使用时:
"与行|上行|支.$|支行"表示都替换成最后一个

value='核酸与行结果:"上行",:"与行",松州:"松川",抚州,核酸检测结果:"南学"。'
equal_character = ["与行|上行|支.$|支行", "全行|分纠|分行","松州|松川|税州|抚州|杭州","南学|南宁"]
for pattern in equal_character:
    value = re.sub(pattern, pattern.split("|")[-1], value)
print(value)
=》核酸支行结果:"支行",:"支行",杭州:"杭州",杭州,核酸检测结果:"南宁"。
二:提取字符串中的中文

正则findall方法一:

b="72xiao小时阴性asd核酸检测结果"
c=re.findall(u"[u4e00-u9fa5]+", b, re.S)
string_china="".join(c)
print(string_china)

方法二:

china_char = ""
for char in b:
    if 'u4e00' <= char <= 'u9fff':
        china_char += char
print(china_char)

=》小时阴性核酸检测结果

三:正则语法详解

边界匹配

^ 匹配字符串开头
$ 匹配字符串末尾
A 匹配字符串开始
Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘erb’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。
B 匹配非单词边界。‘erB’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。

特殊构造(不分组)

(?:…) (…)的不分组版本,用于|或后接数量词 (?:abc){2} abcabc
(?iLmsux) iLmsux中的每个字符代表正则表达式的一种匹配模式,只能用在正则表达式开头,可选多个 (?i)abc AbC
(?#…) 将#后面的字符当做注释忽略 abc(?#comment)def abcdef
(?=…) 之后的字符串表达式需要匹配才能成功,不消耗字符串内容 a(?=d) 后面是数字的a
(?!..) 之后的字符串表达式需要不匹配才能成功,不消耗字符串内容 a(?!d) 后面不是数字的a
(?<=…) 之前的字符串表达式需要匹配才能成功,不消耗字符串内容 (?<=d)a
前面是数字的a

(?

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/925607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号