使用re.sub将文本替换为匹配到的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用re.sub将文本替换为匹配到的内容相关的知识,希望对你有一定的参考价值。
参考技术A 文本处理中,经常会碰到需要将某些指定字符替换掉,而保留其余部分的情况,比如:上述文本中的 是LaTeX中的特殊字符,在整个句子中并没有什么实际含义,反而会影响我对文本的后续处理,所以我需要把上述文本中的花括号 去掉。然而,其余的文本中, 内包着的可能是公式或者其他的特殊字符,又或者有些 在文本中是有其特定含义的,我不希望把这些 也替换掉。因而不能简单地使用 replace() 来替换。
用正则的话,可以这样来处理:
输出结果为:
这里 re.sub() 的第二个参数是替换的目标,用 \1 来表示 pattern 的正则表达式中第一个小括号括住的部分,记住第二个参数的字符串前面要加 r 。
挺长时间之前这样用过,但是再次用到的时候忘了具体怎么用,百度也没找到想要的,最后还是在 stackoverflow 找打了答案,在这里记录一下。
re.sub
1.re.sub主要功能实现正则的替换。
re.sub定义:
sub(pattern, repl, string, count=0, flags=0)
意思为:对字符串string按照正则表达式pattern,将string的匹配项替换成字符串repl。
公式解析:
pattern为表示正则中的模式字符串,
repl为replacement,被替换的内容,repl可以是字符串,也可以是函数。
string为正则表达式匹配的内容。
count:由于正则表达式匹配到的结果是多个,使用count来限定替换的个数(顺序为从左向右),默认值为0,替换所有的匹配到的结果。
flags是匹配模式,可以使用按位或’|’表示同时生效,也可以在正则表达式字符串中指定。
>import re >re.sub(r‘\w+‘,‘10‘,"ji 43 af,geq",2,flags=re.I) 结果为:‘10 10 af,geq‘
详解:首先导入re模块,使用re.sub函数,r’\w+’为正则表达式,匹配英文单词或数字,’10’为被替换的内容,”ji 43 af,geq”为re匹配的字符串内容,count为2 只替换前两个,flags=re.I 忽略大小写。
以上是关于使用re.sub将文本替换为匹配到的内容的主要内容,如果未能解决你的问题,请参考以下文章