python正则表达边界_Python之正则表达式
目录
1、 正则表达式基本使用,元字符,预定义字符
2、 python的正则表达式re模块
为了方便讲解,首先讲一下re模块最简单的用法
import re #内置模块
#编译,就是我们要匹配的规则,这里之所以要编译一下,是因为python内部的优化,如果后面多次使用这个规则,效率则会提升
pattern = re.compile('sun')
#match方法:从头匹配
#str = "sun111"
str = "111sun"
match = pattern.match(str)
#这里也就是说这里
#当str是sun111时,控制台就输出sun,表示匹配成功
#当str是111sun时,控制台就输出None,表示匹配失败
if match:
print(match.group())
else:
print(match)
一、 正则表达式基本使用,元字符,预定义字符
1.1、元字符
元字符
含义
用法
点号: .
可以匹配任意字符(\n除外)
re.match('sun.', 'sunA') #匹配成功
re.match('sun.', 'sun@') #匹配成功
re.match('sun.', 'sun5') #匹配成功
re.match('sun.', 'sun\n') #匹配失败
星号: *
可以匹配某字符0次、1次、n次
print(re.findall("qwer*", 'qwe'))#匹配r 0 次成功
print(re.findall("qwer*", 'qwer'))#匹配r 1 次成功
print(re.findall("qwer*", 'qwerrrrr'))#匹配r n 次成功
加号: +
可以匹配某字符1次、n次
print(re.findall("qwer+", 'qwe'))#匹配r 0 次失败功
print(re.findall("qwer+", 'qwer'))#匹配r 1 次成功
print(re.findall("qwer+", 'qwerrrrr'))#匹配r n 次成功
问号:?
某字符要么没有(0次),要么只有1次
print(re.findall("sun?w", 'fsunw'))#匹配成功
print(re.findall("sun?w", 'fsuw'))#匹配成功
print(re.findall("sun?w", 'fsunnw')) #匹配失败
上括号: ^
匹配开头
re.findall("^sun", 'sun11111'))#匹配成功(sun)
re.findall("^sun", '11sun111') #匹配失败
美元符: $
匹配结尾
re.findall("sun$", '11111sun')#匹配成功(sun)
re.findall("sun$", 'sun11111') #匹配失败
或符号: |
或者条件
re.findall("sun|qi", 'sun11')#匹配成功
re.findall("sun|qi", '11qi')#匹配成功
re.findall("sun|qi", 'sun11qi')#匹配成功
re.findall("sun|qi", 'aaaaa') #匹配失败
花括号: {}
{3}:匹配前一个字符3次
{1,3}:匹配前一个字符1到3次
{3,}:匹配前一个字符3次以上
re.findall("a{1}b{2}c{3}", 'abbccc')#匹配成功
print(re.findall("a{4,}", 'aaa')#匹配失败
re.findall("a{4,}", 'aaaa')#匹配成功
中括号: []
字符集
[abc]{2}:只要字符满足在中括号中存在,就保留,匹配两次
匹配:re.findall("[abc]{2}", 'abebccc')
结果:['ab', 'bc', 'cc']
分析:首先匹配a,在字符集[]中,保留,
再匹配一次,开始匹配b,满足条件,
这时得到第一个结果ab。
然后开始匹配e,不满足条件,
开始匹配b....以此类推
小括号: ()
分组
匹配:re.match("(sun){1}([abc]{2})", 'sunaaa').groups()
结果:('sun', 'aa')
1.2、预定义字符
预定义字符
含义
\d
0-9
\D
非数字
\s
匹配任意空白字符
空白字符包括空格、\n、\t、\v、\f、\r
\S
非空白字符
\w
[ a-z, A-Z, 0-9,_ ]
\W
与\w相反的字符,比如#@之类的,不包括汉字
\A
匹配开头,与 ^ 相似
\Z
匹配结尾,与 $ 相似
\b
边界字符
\B
非边界字符
二、python的正则表达式re模块
2.1、match方法
一个参数
就是从头开始匹配
pattern = re.compile('sun')
result = pattern.match('sunqiyong')
if result:
print(result.group())
#输出结果:sun
compile 第二个参数
可以改变匹配规则
pattern = re.compile('sun.')
result = pattern.match('sun\n')
if result:
print(result.group())
#没有输出结果
pattern = re.compile('sun.',re.S)
result = pattern.match('sun\n')
if result:
print(result.group())
#输出结果:sun
#总结,就是加入参数re.S,就可以让点号不受\n的影响
2.2、search 方法
相比较于match函数,都是从开头开始匹配,是不过search方法是如果开头匹配不上,会继续向后匹配
p = re.compile('cici')
match = p.search('123cicijjfcicioi')
if match:
print(match.group()) #输出结果:cici
print(match.start()) #输出结果:3 角标3
print(match.end()) #输出结果:7 角标7
print(match.span()) #输出结果:(3, 7) 匹配结果角标区间,包左不包右
2.3、分组 信息
p = re.compile('([a-z]{3})([a-z]{2})([0-9]{2})([A-Z]{2})')
match = p.search('sunci55PY')
if match:
print(match.groups()) #输出结果('sun', 'ci', '55', 'PY')
2.4、findall方法
p = re.compile('\d{2}')
match = p.findall('sunci55PY23')
print(match)#输出结果 ['55', '23']
2.5、finditer方法
和findal比较相似,匹配之后返回的对象是--->迭代器
p = re.compile('\d{2}')
match = p.finditer('benci55PY23')
for item in match:
print(item.group())
#输出结果 55 23
2.6、sub方法 主要是替换的功能
p = re.compile('\d+')
#参数一 新的内容,要替换成的内容
#参数二 旧的内容,要被替换的内容
#参数三 替换的次数
match = p.sub('www','aaa5555aa33aa222aaa',2)
print(match)#输出结果 aaawwwaawwwaa222aaa
2.7、subn方法 主要是替换的功能
str = 'aaa5555aa33aa222aaa'
#参数一 匹配规则
#参数二 新的内容,要替换成的内容
#参数三 旧的内容,要被替换的内容
match = re.subn('\d+', 'qq', str)
print(match)# 输出结果 ('aaaqqaaqqaaqqaaa', 3)
2.8、aplit方法 字符串切割
pattern = re.compile(':')#用 : 切割字符串
result = pattern.split('2017:12:12 09:21:45')
print(result)#输出结果 ['2017', '12', '12 09', '21', '45']
print(re.split('\W','sqy android 2018'))
#输出结果 ['sqy', 'android', '2018']
版权声明:个人原创,若转载,请注明出处
python正则表达边界_Python之正则表达式相关推荐
- python 正则表达函数_python笔记-正则表达式常用函数
1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...
- python正则匹配特殊字符_python 利用正则表达式提取特殊信息
1.删除字符串中的 Python注释 案例: import re time = "2020-01-01 # 这是一个日期" num = re.sub(r'#.*$', " ...
- python正则表达
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 要匹配一个模式,前后的数字块是相同的,中间是字母,比如111aadf111 这就 ...
- python正则取反_python 正则表达式
python 正则表达式 一. re 模块用于对python的正则表达式的模式匹配模式描述 ^匹配字符串的开头. $匹配字符串的末尾. .匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹 ...
- python 正则表达式取反,python正则取反_Python正则表达式-基础
Python正则表达式-基础 python使用正则,需要先引入re模块 import re 匹配符 单个字符表达式 含义 [0-9] 0123456789任意之一 [a-z] 小写字母任意之一 [A- ...
- python正则匹配数字_Python正则表达式,用于字母数字
我正在学习正则表达式,并尝试执行以下操作: 以下是一系列字母数字的格式.它以4位数字开头,后跟2个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格, ...
- python正则表达regex_Python 正则表达式(RegEx)
版权所有,未经许可,禁止转载 正则表达式是组成搜索模式的字符序列. 正则表达式用于按指定的搜索模式搜索字符串. 正则表达式(RegEx)模块 Python有一个名为re的内置包,用来处理正则表达式. ...
- python正则匹配中文_python 正则表达式匹配中文-阿里云开发者社区
python 正则表达式匹配中文 文件编码为 utf-8 设置默认编码为 utf-8 中文需要转换为 \u 形式的编码,也就是 编码, 轮换方法,cmd 下执行 python 进入 python 命 ...
- python 正则式替换_python 正则表达式参数替换实例详解
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...
- python正则替换空格_Python|文本处理:用正则表达式替换掉汉字(非英文)中间的空格...
网络上的一些文本,部分会有一些不必要的空格,如果想把空格全部替换掉,使用字符串string类的replace()方法即可,如: str = str.replace(' ','') 但如果是中英文混排的 ...
最新文章
- 大年初五,Python、Go、C...你最爱用哪种语言?
- 这位院士,获一次性奖励2500万!
- 关于STL中的map和hash_map
- Containerd 的前世今生和保姆级入门教程
- 生产订单成本的计划、控制和结算
- python异常值检测_python – 使用RPCA的异常值
- 查找和排序的一点浅显认识
- Tidb集群加mysql_TiDB - 快速入门,集群搭建
- 【英语学习】【WOTD】liaison 释义/词源/示例
- android bootstrap功能,整合QMUI Android和Android-Bootstrap
- DBeaverEE for Mac(数据库管理工具)v21.2.1中文版
- 浅谈Nodejs应用主文件index.js组成部分——略详解
- ffmpeg音视频剪辑常用操作
- win10计算机无动作后锁屏,怎么让win10不锁屏_让win10不锁屏的操作方法
- Android创建/删除桌面快捷方式
- javaScript系列 [06]-javaScript和this
- 查询-SPJ练习3参考答案
- メンアットワーク!3 men at work3 猎人们的青春攻略
- 一周AI要闻回顾 | FB新研究颠覆CNN,加州新政允许无人卡车路测
- 利用Python做一个漂亮小姐姐词云跳舞视频