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中的字典容器
Apr 14 Python
Python实现栈的方法
May 26 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
python 消除 futureWarning问题的解决
Dec 25 Python
python集合删除多种方法详解
Feb 10 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
python判断变量是否为列表的方法
Sep 17 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
德生PL550的电路分析
2021/03/02 无线电
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP的PSR规范中文版
2013/09/28 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
PHP7 新增常量
2021/03/09 PHP
Javascript 继承机制实例
2009/08/12 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
python3 读写文件换行符的方法
2018/04/09 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
党校自我鉴定范文
2013/10/02 职场文书
员工评语大全
2014/01/19 职场文书
小学体育教学反思
2014/01/31 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书