Python中正则表达式的用法实例汇总


Posted in Python onAugust 18, 2014

正则表达式是Python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用。具体如下:

一、字符串替换

1.替换所有匹配的子串

用newstring替换subject中所有与正则表达式regex匹配的子串

result, number = re.subn(regex, newstring, subject)

2.替换所有匹配的子串(使用正则表达式对象)

reobj = re.compile(regex)
result, number = reobj.subn(newstring, subject)

二、字符串拆分

1.字符串拆分

result = re.split(regex, subject)

2.字符串拆分(使用正则表示式对象)

reobj = re.compile(regex)
result = reobj.split(subject)

三、匹配

下面列出Python正则表达式的几种匹配用法:

1.测试正则表达式是否匹配字符串的全部或部分

regex=ur"..." #正则表达式
if re.search(regex, subject):
  do_something()
else:
  do_anotherthing()

2.测试正则表达式是否匹配整个字符串

regex=ur"...\Z" #正则表达式末尾以\Z结束
if re.match(regex, subject):
  do_something()
else:
  do_anotherthing()

3. 创建一个匹配对象,然后通过该对象获得匹配细节

regex=ur"..." #正则表达式
match = re.search(regex, subject)
if match:
  # match start: match.start()
  # match end (exclusive): match.end()
  # matched text: match.group()
  do_something()
else:
  do_anotherthing()

4.获取正则表达式所匹配的子串

(Get the part of a string matched by the regex)

regex=ur"..." #正则表达式
match = re.search(regex, subject)
if match:
  result = match.group()
else:
  result = ""

5. 获取捕获组所匹配的子串

(Get the part of a string matched by a capturing group)

regex=ur"..." #正则表达式
match = re.search(regex, subject)
if match:
  result = match.group(1)
else:
  result = ""

6. 获取有名组所匹配的子串

(Get the part of a string matched by a named group)

regex=ur"..." #正则表达式
match = re.search(regex, subject)
if match:
  result = match.group("groupname")
else:
  result = ""

7. 将字符串中所有匹配的子串放入数组中

(Get an array of all regex matches in a string)

result = re.findall(regex, subject)

8.遍历所有匹配的子串

(Iterate over all matches in a string)

for match in re.finditer(r"<(.*?)\s*.*?/\1>", subject)
  # match start: match.start()
  # match end (exclusive): match.end()
  # matched text: match.group()

9.通过正则表达式字符串创建一个正则表达式对象

(Create an object to use the same regex for many operations)

reobj = re.compile(regex)

10.用法1的正则表达式对象版本

(use regex object for if/else branch whether (part of) a string can be matched)

reobj = re.compile(regex)
if reobj.search(subject):
  do_something()
else:
  do_anotherthing()

11.用法2的正则表达式对象版本

(use regex object for if/else branch whether a string can be matched entirely)

reobj = re.compile(r"\Z") #正则表达式末尾以\Z 结束
if reobj.match(subject):
  do_something()
else:
  do_anotherthing()

12.创建一个正则表达式对象,然后通过该对象获得匹配细节

(Create an object with details about how the regex object matches (part of) a string)

reobj = re.compile(regex)
match = reobj.search(subject)
if match:
  # match start: match.start()
  # match end (exclusive): match.end()
  # matched text: match.group()
  do_something()
else:
  do_anotherthing()

13.用正则表达式对象获取匹配子串

(Use regex object to get the part of a string matched by the regex)

reobj = re.compile(regex)
match = reobj.search(subject)
if match:
  result = match.group()
else:
  result = ""

14.用正则表达式对象获取捕获组所匹配的子串

(Use regex object to get the part of a string matched by a capturing group)

reobj = re.compile(regex)
match = reobj.search(subject)
if match:
  result = match.group(1)
else:
  result = ""

15.用正则表达式对象获取有名组所匹配的子串

(Use regex object to get the part of a string matched by a named group)

reobj = re.compile(regex)
match = reobj.search(subject)
if match:
  result = match.group("groupname")
else:
  result = ""

16.用正则表达式对象获取所有匹配子串并放入数组

(Use regex object to get an array of all regex matches in a string)

reobj = re.compile(regex)
result = reobj.findall(subject)

17.通过正则表达式对象遍历所有匹配子串

(Use regex object to iterate over all matches in a string)

reobj = re.compile(regex)
for match in reobj.finditer(subject):
  # match start: match.start()
  # match end (exclusive): match.end()
  # matched text: match.group()

感兴趣的读者可以动手调试一下本文实例代码,相信会有新的收获。

Python 相关文章推荐
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
python冒泡排序简单实现方法
Jul 09 Python
详解Django通用视图中的函数包装
Jul 21 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python有序字典简单实现方法示例
Sep 28 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
Python StringIO如何在内存中读写str
Jan 07 Python
python爬虫要用到的库总结
Jul 28 Python
python rsa-oaep加密的示例代码
Sep 23 Python
python中enumerate的用法实例解析
Aug 18 #Python
Python采用raw_input读取输入值的方法
Aug 18 #Python
Python中Collection的使用小技巧
Aug 18 #Python
Python实现3行代码解简单的一元一次方程
Aug 18 #Python
Python统计列表中的重复项出现的次数的方法
Aug 18 #Python
Python中无限元素列表的实现方法
Aug 18 #Python
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 #Python
You might like
实用函数5
2007/11/08 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
跟混乱的页面弹窗说再见
2019/04/11 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python实现海螺图片的方法示例
2019/05/12 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
python初步实现word2vec操作
2020/06/09 Python
Python 如何展开嵌套的序列
2020/08/01 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
世界最大的票务市场:viagogo
2017/02/16 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
JSF界面控制层技术
2013/06/17 面试题
农民致富事迹材料
2014/01/23 职场文书
老师对学生的评语
2014/04/18 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
合理化建议书
2015/02/04 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2015年中个人总结范文
2015/03/10 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
高中政治教师教学反思
2016/02/23 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android