Python- re模块
admin
2023-07-07 23:03:57
0

> re 模块

正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

字符匹配:普通字符、元字符

1、普通字符类似精确匹配:

re.findall()第一个参数是规则,第二个参数是匹配的字符串。
Python- re模块

2、元字符

元字符:*. ^ $ + ? { } [ ] | ( ) **

1、. 一个点号代表一个任意字符,多个代表多个。不包括换行符号(\n , \t , \r)

Python- re模块
2、^ 开头符号 (^a :表示匹配以a开头字符串)

3、$ 结尾符号 (a$: 表示匹配以a结尾的字符串)

4、* 星号代表匹配 0到无穷次

5、+ 代表匹配 1 到 无穷次

6、 代表匹配 0 到 1次

7、{} {0,1} 这样写代表匹配0到1次,{2,8}代表匹配2到8次

8、[] 这个中括号是 字符集 的意思。例 :k[yc] 表示匹配 ky 或 kc ‘或’的意思

Python- re模块

字符集里面可以应用3个符号: - . ^ . \ ,除了这三个符号,其余符号都代表是字符

加个 - 符号:
Python- re模块

加个 ^ 符号,‘非’ 的意思:
Python- re模块

字符集加 \ 跟元字符效果一样,(转义符)

**元字符之转义符\

反斜杠后边跟元字符去除特殊功能,比如.
反斜杠后边跟普通字符实现特殊功能,比如\d

\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9
]
\b 匹配一个特殊字符边界,比如空格 ,&,#等

例如使用 \b 就要使用转义符:
Python- re模块

匹配字符串'jfdji\ldfdsf' 里的 i\l ,就要多加3个 \ 因为python解释器转义之后传给 re模块 ,re模块再转义:

Python- re模块 打印结果是两个 \ 应该是进去两个出来两个。

Python- re模块

9、| 代表或的意思。例如:an|jk :匹配 an 字符串 或 jk 字符串

10、() 括号内字符串为整体 例如: (abc) 代表匹配 abc 字符串

Python- re模块

re模块函数方法

re.findall('a','alfgd') #返回所有满足匹配条件的结果,放在列表里

re.search() # 函数会在字符串内查找模式匹配,只到找到第一个匹配然 后返回一个包含匹配信息的对象,该对象可以通过调用 group()方法得到匹配的字符串,如果字符串没有匹配,则 返回 None。

Python- re模块

re.search('(?P<组名>[a-z+])') ,可以给匹配到的数据设置组名(?P<组名>是gu固定格式

Python- re模块

`re.match('a','abc').group()`` 和 search一样,不过match只从字符串开头匹配 ,如果这个例子不是 a 开头 ,会报错

re.split() 分割字符串 例:
Python- re模块
上图中分割步骤为:
按字符串第一个a分割,因为a左边为空所以得到 ' ' 和cvabjkk ,然后遇到a再分割得到 cv 和bjkk , 然后再从 b分割 b左边为空 ,变成 ' ' jkk ,然后整个加起来: ['', 'cv', '', 'jkk']

re.sub() 替换方法,有4个参数。例如 re.sub('\d','abc','adfs5dfs6',1)
上述例子第一个参数为要被替换的字符串,第二个为替换后的字符串,第三个为要修改的原始字符串,第四个为要替换多少次
Python- re模块

re.subn('\d','abc','adfs5dfs6') 加个n可以统计被替换多少次:

Python- re模块

re.compile() 制定匹配规则:

Python- re模块

re.finditer() 会把匹配结果变成一个迭代器;

Python- re模块

注意

如下图,应该匹配出 www.baidu.com 以及www.sina.com ,显示结果没有匹配:
Python- re模块

中间家里 括号(分组),会优先显示出分组里的内容,要取消有限权限 加上 ?:

Python- re模块

上一篇:Python - logging模块

下一篇:python文件操作

相关内容

热门资讯

我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...
原创 识... 还是那句话,机圈苦大屏久已…… 虽然大屏有大屏的美,但是小屏也有小屏的俏。在大屏旗舰占据主流的手机市...
玄戒技术取得分频电路专利,实现... 国家知识产权局信息显示,北京玄戒技术有限公司取得一项名为“分频电路、分频器、射频芯片和电子设备”的专...
为什么今年香会基调明显变了 5月29日—31日在新加坡举行的第23届香格里拉对话会(简称“香会”),见证着元首引领下大国关系继续...
成本几毛钱、假驱蚊液香精兑水,... 入夏升温,蚊虫进入活跃期,驱蚊防护成为民生刚需,《财经调查》持续接到消费者投诉,他们买到的多款网红驱...
越来越多80后90后,正在丧失... 六一儿童节到来之际,朋友圈里开始出现一种熟悉的热闹。有人晒出零食礼包,有人半开玩笑地向伴侣讨礼物,还...
洋保电子取得用于低温环境的电气... 国家知识产权局信息显示,洋保电子(太仓)有限公司取得一项名为“一种用于低温环境的电气柜”的专利,授权...
中日韩飞手争霸宁波!2026无... 潮新闻客户端 记者 陈冲 通讯员 朱凝 5月31日,2026小遛·无人机竞速世界杯(中国·宁波鄞州站...