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用法的更多相关文章

  1. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  2. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  5. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  6. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  7. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  8. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  9. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

  10. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

随机推荐

  1. DedeCMS 列表页调用图集内容多张图片的方法

    新做一个以图片为主的网站,采用的DEDECMS图集,列表页要求直接调内容面的大图,解决方法如下:(主要是采用php的正则匹配函数preg_match_all函数来巩固复习下该函数:preg_match ...

  2. SEO误区之——静态化页面

    你随便去找一个做SEO的人或者一个公司,他百分之百会让你把网页弄成纯静态页面,然后告诉你这样对搜索引擎是如何如何地好,那么我告诉你,这个做 SEO的,肯定不专业. 网页静态化这个东西,纯属以讹传讹的事 ...

  3. SourceTree的基本使用-git on mac

    SourceTree的基本使用 学习了:https://www.cnblogs.com/tian-xie/p/6264104.html

  4. netty实现长连接心跳检

    主要逻辑: 使用netty实现长连接,主要靠心跳来维持服务器端及客户端连接. 实现的逻辑主要是: 服务器端方面: 1, 服务器在网络空闲操作一定时间后,服务端失败心跳计数器加1. 2, 如果收到客户端 ...

  5. Win7如何修复开机画面

    将下面文件保存为"修复Win7开机画面.bat"双击运行即可   bcdedit /set {current} locale zh-CN    

  6. 习科小D整理找网站后台办法[科普]

    习科科普贴,如何找到网站的后台 作者:小Dの马甲来自:习科论坛 - Silic.Org - BlackBap.Org 1, 穷举猜解    现如今可以暴力猜解网站后台登陆地址的软件有很多,从最早的啊D ...

  7. JavaScript学习与实践一

    一.JavaScript数组 创建JavaScript数组有两种方式 方式一: var cars=new Array(); cars[0]="Audi"; cars[1]=&quo ...

  8. 两个网卡bond

    vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOO ...

  9. Flume 开发人员指南V1.5.2

    介绍 概述 Apache Flume是一个用来从非常多不同的源有效地收集.聚集和移动大量的日志数据到一个中心数据仓库的分布式的,可靠的和可用的系统. Apache Flume是Apache软件基金会的 ...

  10. 【Python】列表~深入篇

    列表是一列按特定顺序排列的元素组成. 在Python中,用方括号[]来表示列表 下面是一个语言列表 Language = ['Chinese','English','Franch','Deutsch' ...