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标准库06之子进程 (subprocess包) 详解
Dec 07 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
python语音识别实践之百度语音API
Aug 30 Python
python 有效的括号的实现代码示例
Nov 11 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
Python中使用ipython的详细教程
Jun 22 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 多维数组排序(usort,uasort)
2010/06/30 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
JS 自定义带默认值的函数
2011/07/21 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python 函数返回值的示例代码
2019/03/11 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
员工评语大全
2014/01/19 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
电工实训报告总结
2014/11/05 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
python标准库ElementTree处理xml
2022/05/20 Python
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python