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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
跟老齐学Python之复习if语句
Oct 02 Python
python对url格式解析的方法
May 13 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
django自带的server 让外网主机访问方法
May 14 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python实现批量解析邮件并下载附件
Jun 19 Python
python读写csv文件实例代码
Jul 05 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
python datetime处理时间小结
Apr 16 Python
python 如何获取页面所有a标签下href的值
May 06 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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实现向javascript传递数组的方法
2015/07/27 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python实现提取文章摘要的方法
2015/04/21 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
AJAX的全称是什么
2012/11/06 面试题
员工拓展培训方案
2014/02/15 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
高一学生期末评语
2014/04/25 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
护士个人年终总结
2015/02/13 职场文书
《所见》教学反思
2016/02/23 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
netty 实现tomcat的示例代码
2022/06/05 Servers