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之编写类之一创建实例
Oct 11 Python
python追加元素到列表的方法
Jul 28 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python如何实现转换URL详解
Jul 02 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
python和C++共享内存传输图像的示例
Oct 27 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
Python实战之疫苗研发情况可视化
May 18 Python
理解python中装饰器的作用
Jul 21 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 表单数据的获取代码
2009/03/10 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python三方库之requests的快速上手
2019/03/04 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python实现静态服务器
2019/09/05 Python
python如何使用代码运行助手
2020/07/03 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书