目录

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之正则表达式相关推荐

  1. python 正则表达函数_python笔记-正则表达式常用函数

    1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...

  2. python正则匹配特殊字符_python 利用正则表达式提取特殊信息

    1.删除字符串中的 Python注释 案例: import re time = "2020-01-01 # 这是一个日期" num = re.sub(r'#.*$', " ...

  3. python正则表达

    http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 要匹配一个模式,前后的数字块是相同的,中间是字母,比如111aadf111 这就 ...

  4. python正则取反_python 正则表达式

    python 正则表达式 一. re 模块用于对python的正则表达式的模式匹配模式描述 ^匹配字符串的开头. $匹配字符串的末尾. .匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹 ...

  5. python 正则表达式取反,python正则取反_Python正则表达式-基础

    Python正则表达式-基础 python使用正则,需要先引入re模块 import re 匹配符 单个字符表达式 含义 [0-9] 0123456789任意之一 [a-z] 小写字母任意之一 [A- ...

  6. python正则匹配数字_Python正则表达式,用于字母数字

    我正在学习正则表达式,并尝试执行以下操作: 以下是一系列字母数字的格式.它以4位数字开头,后跟2个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格, ...

  7. python正则表达regex_Python 正则表达式(RegEx)

    版权所有,未经许可,禁止转载 正则表达式是组成搜索模式的字符序列. 正则表达式用于按指定的搜索模式搜索字符串. 正则表达式(RegEx)模块 Python有一个名为re的内置包,用来处理正则表达式. ...

  8. python正则匹配中文_python 正则表达式匹配中文-阿里云开发者社区

    python 正则表达式匹配中文 文件编码为 utf-8 设置默认编码为 utf-8 中文需要转换为 \u 形式的编码,也就是  编码, 轮换方法,cmd 下执行 python 进入 python 命 ...

  9. python 正则式替换_python 正则表达式参数替换实例详解

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  10. python正则替换空格_Python|文本处理:用正则表达式替换掉汉字(非英文)中间的空格...

    网络上的一些文本,部分会有一些不必要的空格,如果想把空格全部替换掉,使用字符串string类的replace()方法即可,如: str = str.replace(' ','') 但如果是中英文混排的 ...

最新文章

  1. 大年初五,Python、Go、C...你最爱用哪种语言?
  2. 这位院士,获一次性奖励2500万!
  3. 关于STL中的map和hash_map
  4. Containerd 的前世今生和保姆级入门教程
  5. 生产订单成本的计划、控制和结算
  6. python异常值检测_python – 使用RPCA的异常值
  7. 查找和排序的一点浅显认识
  8. Tidb集群加mysql_TiDB - 快速入门,集群搭建
  9. 【英语学习】【WOTD】liaison 释义/词源/示例
  10. android bootstrap功能,整合QMUI Android和Android-Bootstrap
  11. DBeaverEE for Mac(数据库管理工具)v21.2.1中文版
  12. 浅谈Nodejs应用主文件index.js组成部分——略详解
  13. ffmpeg音视频剪辑常用操作
  14. win10计算机无动作后锁屏,怎么让win10不锁屏_让win10不锁屏的操作方法
  15. Android创建/删除桌面快捷方式
  16. javaScript系列 [06]-javaScript和this
  17. 查询-SPJ练习3参考答案
  18. メンアットワーク!3 men at work3 猎人们的青春攻略
  19. 一周AI要闻回顾 | FB新研究颠覆CNN,加州新政允许无人卡车路测
  20. 利用Python做一个漂亮小姐姐词云跳舞视频

热门文章

  1. mysql kill 很多_MySQL--批量KILL连接
  2. mysql 伪哈希_MySQL技巧--伪哈希索引
  3. Laravel5.1/Homestead (0.2.7) 开发环境的部署和设置
  4. ActiveMQ demo
  5. lombok系列(一)
  6. linux shell实现守护进程 看门狗 脚本
  7. Eclipse中设置自定义文档签名
  8. 『电脑技巧』破解Win7/Win8登录密码
  9. 探索线程安全背后的本质——volatile
  10. Spring-外部配置的值是如何通过@Value注解获取的?