python中正则表达式的使用方法


Posted in Python onFebruary 25, 2018

本文主要关于python的正则表达式的符号与方法。

findall: 找寻所有匹配,返回所有组合的列表
search: 找寻第一个匹配并返回
sub: 替换符合规律的内容,并返回替换后的内容
.:匹配除了换行符以外的任意字符

a = 'xy123'
b = re.findall('x...',a)
print(b)
# ['xy12']

*:匹配前一个字符0次或者无限次

a = 'xyxy123'
b = re.findall('x*',a)
print(b)
# ['x', '', 'x', '', '', '', '', '']

?:匹配前一个字符0次或者1次

a = 'xy123'
b = re.findall('x?',a)
print(b)
# ['x', '', '', '', '', '']

.*:贪心算法

b = re.findall('xx.*xx',secret_code)
print(b)
# ['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx']

.*?:非贪心算法

c = re.findall('xx.*?xx',secret_code)
print(c)
# ['xxIxx', 'xxlovexx', 'xxyouxx']

():括号内结果返回

d = re.findall('xx(.*?)xx',secret_code)
print(d)
for each in d:
  print(each)
# ['I', 'love', 'you']
# I
# love
# you

re.S使得.的作用域包括换行符”\n”

s = '''sdfxxhello
xxfsdfxxworldxxasdf'''

d = re.findall('xx(.*?)xx',s,re.S)
print(d)
# ['hello\n', 'world']

对比findall与search的区别

s2 = 'asdfxxIxx123xxlovexxdfd'
f = re.search('xx(.*?)xx123xx(.*?)xx',s2).group(2)
print(f)
f2 = re.findall('xx(.*?)xx123xx(.*?)xx',s2)
print(f2[0][1])
# love
# love

虽然两者结果相同,但是search是搭配group来得到第二个匹配,而findall的结果是[(‘I', ‘love')],包含元组的列表,所以需要f2[0][1]来引入。

sub的使用

s = '123rrrrr123'
output = re.sub('123(.*?)123','123%d123'%789,s)
print(output)
# 123789123

例如我们需要将文档中的所有的png图片改变路径,即需要找到所有的 .png 结尾,再将其都加上路径,

import re

def multiply(m):
  # Convert group 0 to an integer.
  v = m.group(0)
  print(v)
  # Multiply integer by 2.
  # ... Convert back into string and return it.
  print('basic/'+v)
  return 'basic/'+v

结果如下

>>>autoencoder.png
  basic/autoencoder.png
  RNN.png
  basic/RNN.png
  rnn_step_forward.png
  basic/rnn_step_forward.png
  rnns.png
  basic/rnns.png
  rnn_cell_backprop.png
  basic/rnn_cell_backprop.png
  LSTM.png
  basic/LSTM.png
  LSTM_rnn.png
  basic/LSTM_rnn.png
  attn_mechanism.png
  basic/attn_mechanism.png
  attn_model.png
  basic/attn_model.png

仿照上面案例,我们可以方便的对我们的任务进行定制。

subn相比sub,subn返回元组,第二个元素表示替换发生的次数:

import re

def add(m):
  # Convert.
  v = int(m.group(0))
  # Add 2.
  return str(v + 1)

# Call re.subn.
result = re.subn("\d+", add, "1 2 3 4 5")

print("Result string:", result[0])
print("Number of substitutions:", result[1])
>>>
Result string: 11 21 31 41 51
Number of substitutions: 5
Python 相关文章推荐
python批量修改文件后缀示例代码分享
Dec 24 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
浅述python2与python3的简单区别
Sep 19 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
Feb 28 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
python中__slots__节约内存的具体做法
Jul 04 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 #Python
python正则表达式爬取猫眼电影top100
Feb 24 #Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 #Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 #Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 #Python
Python 中Pickle库的使用详解
Feb 24 #Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 #Python
You might like
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
PHP常用的小程序代码段
2015/11/14 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
javascript的事件描述
2006/09/08 Javascript
jquery 常用操作方法
2010/01/28 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Python 字符串定义
2009/09/25 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python实现的科学计算器功能示例
2017/08/04 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书