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多线程抓取天涯帖子内容示例
Apr 03 Python
python3 拼接字符串的7种方法
Sep 12 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
python 6种方法实现单例模式
2020/12/15 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
中学运动会广播稿
2014/01/19 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
检讨书怎么写
2015/05/07 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang