博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python模块-re模块,正则表达式
阅读量:6212 次
发布时间:2019-06-21

本文共 3009 字,大约阅读时间需要 10 分钟。

hot3.png

==详细正则表达式字符请参考,博文《正则表达式字符说明》==

re模块用法

import rere.findall("正则语句","字符串")
基本元字符 释义
. 匹配任意字符
^ 匹配开头字符
$ 匹配结束字符
* 匹配前一个字符0到无限次
+ 匹配前一个字符1到无限次
? 匹配前一个字符0到1次
?: 取消匹配优先级
() 匹配元字符分组
{} 匹配前一个字符指定的次数
[] 字符集,字符集中"[-]"表示范围,"[\]"表示转义"[^]"表示取反
| 或匹配

==注意:多字符匹配【贪婪匹配】转变为惰性匹配在匹配后加"?"==

特殊元字符 释义 类表示方式
\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 匹配一个特殊字符便捷,比如空格,&,#等

普通匹配示例

#-*- coding:utf8 -*-import retxt = "(abcabcabc)"a = re.findall("(abc)",txt)print(a)b = re.findall("(abc)+",txt)print(b)c = re.findall("(?:abc)+",txt)print(c)d = re.search("(abc)",txt)print((d).group())
['abc', 'abc', 'abc']['abc']['abcabcabc']abc

re模块方法

re.findall()

查找所有符合条件的字符,返回的是列表

# -*- coding:utf8 -*-import retxt = ("abcabcabc")a = re.findall("(abc)",txt)     #条件匹配print(a)                        #打印返回值
['bc', 'bc']

re.finditer()

查找所有符合条件的字符,返回的是迭代器对象

#-*- coding:utf8 -*-import retxt = ("abcabcabc")a = re.finditer("(abc)",txt)     #条件匹配print(a)                         #打印返回值为迭代器对象print(a.__next__())              #返回的对象print((a.__next__()).group())    #返回的对象的值
abc

re.search()

搜索符合条件的第一个字符,返回的是对象

# -*- coding:utf8 -*-import retxt = ("abcabcabc")b = re.search(("abc"),txt)      #条件匹配print(b)                        #返回的对象print(b.group())                #返回对象对应的值
<_sre.SRE_Match object; span=(1, 3), match='bc'>    #返回的对象bc                                                  #返回的对象对应的值

分组示例

# -*- coding:utf8 -*-import retxt = ("abc123bbc456ddc678")c = re.search("bc[0-9]+",txt).group()                   #搜索并打印字母加数字print(c)d = re.search("(?P
bc)[0-9]+",txt).group("name") #将字母和数字分开做分组处理并只打印分组部分print(d)
bc123   #未分组显示结果bc      #分组后显示分组结果

re.match()

只会从开始匹配

示例

# -*- coding:utf8 -*-import retxt = ("abc123bbc456ddc678")print(re.match("123",txt))                  #只匹配开头不符合匹配规则返回空print(re.match("\w*",txt))                  #返回匹配结果对象print(re.match("\w*",txt).group())          #输出返回结果对象对应的值
None                                        #匹配不到返回的结果<_sre.SRE_Match object; span=(0, 18), match='abc123bbc456ddc678'>   #返回的对象abc123bbc456ddc678                          #返回对象的值

re.split()

分割匹配

import retxt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")print(re.split("\|",txt))
['小明:74分', '小刚:68分', '小花:90分', '小莉:85分']

re.sub()

匹配替换

#-*- coding:utf8 -*-import retxt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")print(re.sub("小","大",txt))                    #匹配并替换print(re.sub("\d+","未知",txt))                 #匹配并替换print(re.sub("\d+","未知",txt,2))               #匹配前两次
大明:74分|大刚:68分|大花:90分|大莉:85分小明:未知分|小刚:未知分|小花:未知分|小莉:未知分小明:未知分|小刚:未知分|小花:90分|小莉:85分

re.subn()

匹配替换,显示匹配替换的次数,返回元组

#-*- coding:utf8 -*-import retxt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")print(re.subn("小","大",txt))                    #匹配并替换
('大明:74分|大刚:68分|大花:90分|大莉:85分', 4)

re.compile()

自定义规则

规则名称:re.compile(匹配内容)

示例

#-*- coding:utf8 -*-import retxt = "awdfwf23423bgre5345"test = re.compile("\d+")print(test.findall(txt))
['23423', '5345']

转载于:https://my.oschina.net/zhaojunhui/blog/1790173

你可能感兴趣的文章
计算机网络复习(一)
查看>>
新人报道-博客园
查看>>
C#实现对外部程序的调用操作
查看>>
gitignore的配置
查看>>
514:Rails
查看>>
UICollectionViewController
查看>>
CSS布局模型(流动模型、浮动模型、层模型)
查看>>
SQL Server 查询语句(一)
查看>>
新姿势 - 海贼王之伟大航路
查看>>
19个心得 明明白白说Linux下的负载均衡
查看>>
Java Collection 简介
查看>>
字符串公式计算 "(a+b)*c"
查看>>
css-样式重构-代码分享
查看>>
STL中set底层实现方式
查看>>
Git
查看>>
Effective_STL 学习笔记(五) 尽量使用区间成员函数代替他们的单元素兄弟
查看>>
尚学linux课程---12、vim操作命令2
查看>>
javascript进阶课程--第一章--函数
查看>>
使用 JS 关闭警告框及监听自定义事件(amaze ui)
查看>>
P1070 道路游戏
查看>>