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读取word文档的方法
May 09 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
python计算二维矩形IOU实例
Jan 18 Python
Keras实现将两个模型连接到一起
May 23 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 Python
Python爬虫教程知识点总结
Oct 19 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
想学画画?python满足你!
Dec 24 Python
Python3.8官网文档之类的基础语法阅读
Sep 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
Python高效编程技巧
2013/01/07 Python
Python字典操作简明总结
2015/04/13 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
详解python 注释、变量、类型
2018/08/10 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Python处理session的方法整理
2019/08/29 Python
Python简单实现区域生长方式
2020/01/16 Python
python基于openpyxl生成excel文件
2020/12/23 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
小学生美德少年事迹
2014/02/02 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
合作与交流自我评价
2015/03/09 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
JavaScript的Set数据结构详解
2022/02/18 Javascript