re.sub用法
re.sub功能是对于一个输入的字符串,利用正则表达式,来实现字符串替换处理的功能返回处理后的字符串
re.sub共有五个参数
三个必选参数pattern,repl,string
两个可选参数count,flags
pattern,表示正则中的模式字符串
反斜杠加数字(\n)表示对应匹配的也就是用之前匹配到的字符串补充到这个位置,例如
将“hello python,ni hao c,zai jian python”替换为php,代码如下替换成功
import re
inputstr="hello python,ni hao c,zai jian python"
replacestr=re.sub(r"hello(\w+),ni hao(\w+),zai jian \1","php",inputstr)
print(replacestr)
代码中的\1表示第一次匹配到的字符串也就是“python”,这样可以匹配原来的字符串,从而整个字符串替换为php
若改为下面这样
import re
inputstr="hello python,ni hao c,zai jian python"
replacestr=re.sub(r"hello (\w+),ni hao (\w+),zai jian \2","php",inputstr)
print(replacestr)
代码中的\2表示第二次匹配到的字符串也就是“c”,显然不能和原来的字符串匹配,所以不会替换
这里是为了说明区别\n代表的是第n次所匹配到字符串,而不是第n次用到的匹配模式
repl,表示要被替换的,可以是字符串也可以是函数,
- 如果是字符串,则所有的反斜杠转义字符都会被处理
- \n:被处理为对应的换行符
- \r :被处理为回车符
- 不能被识别的转义字符,则只是被识别为普通的字符,例如:\j被处理为j这个字母本身
- 反斜杠加g以及中括号内一个名字,即\g<name>对应命名了的组
import re
inputStr="hello python,ni hao c,zai jian python"
replaceStr=re.sub(r"hello (\w+),ni hao (\w+),zai jian \1","\g<2>",inputStr)
print replaceStr
- 运行结束输出c,这里的g<2>表示用第二个匹配到的字符串进行替换,也就是标红部分
- 也可以用命名分组的方式
import re
inputStr="hello python,ni hao c,zai jian python"
replaceStr=re.sub(r"hello (?P<word1>\w+),ni hao (?P<word2>\w+),zai jian \1","\g<word2>",inputStr)
print replaceStr
- 输出结果为c,将每个匹配的字符串进行了命名,word2匹配到的是c
- 如果是函数,则可以这样使用
import re
def pythonSubDemo():
inputStr="hello 123 world 456";
def _add111(matched):
intStr=matched.group("number")
intValue=int(intStr)
addValue=intValue+111
addValueStr=str(addValue)
return addValueStr
replacedStr=re.sub("(?P<number>\d+)",_add111,inputStr)
print replacedStr
if __name__=="__main__":
pythonSubDemo()
主要代码解释,匹配字符串中的数字,将其命名为组number,一共匹配到两个123和456
将匹配到的东西执行_add111函数,判断是不是组名为number,然后执行
- string,要处理的字符串
- count,限定替换的个数,默认为替换所有
- flags,匹配模式,可以使用按位或‘|‘表示同时生效,也可以在正则表达式中指定。
- re.I忽略大小写
- re.L表示特殊字符集\w,\W,\b,\B,\s,\S
- re.M表示多行模式
- re.S ‘.’包括换行符在内的任意字符
- re.U表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\D
re.sub用法的更多相关文章
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
- chattr用法
[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...
- [转]thinkphp 模板显示display和assign的用法
thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...
随机推荐
- 单源最短路Dijstra算法
Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径.Distra算法的思想与Prim算法很像,它收录顶点的规则是按照路径长度递增的顺序收录的.设v0是源顶点,我们要寻找从v0出发到其他任意 ...
- java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数
如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test; public class TestClass{ // 成员变量赋值第一个 ...
- 2017.04.20 Adams仿真介绍
Adams 仿真 | 验证"隐性机器人模型"概念,提高视觉伺服精度 产品:Adams行业:科研优势: 1.Adams 仿真可精确预测机器人的位置和方位 2.仿真在理论工作验证中起着 ...
- mongodb模拟生产环境的分片集群
分片是指数据拆分 将其分散在不同的机器上的过程,有时候也叫分区来表示这个概念.将数据分散到不同机器上 不需要功能强大的计算机就可以储存更多的数据,处理更大的负载. 几乎所有的数据库 ...
- 路飞学城Python爬虫课第一章笔记
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...
- 使用聚合数据的接口进行的RxAndroid学习
Demo数据源是聚合数据的免费Api,地址:https://www.juhe.cn/ 配合Retrofit 完成数据请求 例子比较简单,没事使用什么复杂的操作符. 就是简单的网络数据获取. 一些常用的 ...
- TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)
ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...
- 在Mac上ppt导出pdf
Step1:打开要操作的ppt,然后Command+P(print),出来打印的界面 Step2:在左下端选择Save as PDF就可以
- jquery:选择器 过滤器
容易理解错误的地方: 1.假如我们想要让一个表格中第八列的所有单元格,都隐藏起来.我们可能会这么写$("table tr td:eq(8)").css("display& ...
- HttpClient 模拟登录网易微博
实现核心:代码执行流程,根据抓包工具,模拟浏览器请求步骤走 private static void testLogin() { try ...