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 25 Python
Python实现全局变量的两个解决方法
Jul 03 Python
详解python的几种标准输出重定向方式
Aug 15 Python
详解K-means算法在Python中的实现
Dec 05 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
详解Python做一个名片管理系统
Mar 14 Python
python django中8000端口被占用的解决
Dec 17 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
Pycharm调试程序技巧小结
Aug 08 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 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
BBS(php & mysql)完整版(八)
2006/10/09 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
python中的函数用法入门教程
2014/09/02 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
python占位符输入方式实例
2019/05/27 Python
python中下标和切片的使用方法解析
2019/08/27 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
工程师岗位职责规定
2014/02/26 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers