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 远程统计文件代码分享
May 14 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python定时检测无响应进程并重启的实例代码
Apr 22 Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
pytorch中获取模型input/output shape实例
Dec 30 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python hashlib模块的使用示例
Oct 09 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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
php之XML转数组函数的详解
2013/06/07 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
input标签内容改变的触发事件介绍
2014/06/18 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
Bootstrap精简教程
2015/11/27 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
利用python获取Ping结果示例代码
2017/07/06 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python实现简单猜数字游戏
2021/02/03 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
财务管理专业推荐信
2013/11/19 职场文书
工作说明书格式
2014/07/29 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
离婚财产分配协议书
2014/10/21 职场文书
太空授课观后感
2015/06/17 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
Python之基础函数案例详解
2021/08/30 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript