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中操作时间之strptime()方法的使用
Dec 30 Python
浅谈Python单向链表的实现
Dec 24 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python3实现逐字输出的方法
Jan 23 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
python django生成迁移文件的实例
Aug 31 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 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
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
JScript的条件编译
2007/05/29 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
python 文件与目录操作
2008/12/24 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
bpython 功能强大的Python shell
2016/02/16 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
连锁经营管理专业大学生求职信
2013/10/30 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
班主任评语大全
2014/04/26 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
专家推荐信范文
2015/03/26 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
java设计模式--七大原则详解
2021/07/21 Java/Android
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python