python正则表达式替换
‘壹’ python:正则表达式:替换字符串的问题
你的正则没有错...但这属于 Dynamic Regex Replacement 了
python 我是不太会,但你要用正则在查询替代的同时执行code,这个恐怕只有 perl 能够做到...
1. perl -le '$ARGV[0]=~s/(?<!\d)(\d)(?!\d)/$1 x 2/eg; print $ARGV[0]' "5+7+12+32"
## 55+77+12+32
2. perl -le '$ARGV[0]=~s/\b(\d)\b/$1 x 2/eg; print $ARGV[0]' "5+7+12+32"
‘贰’ python 正则表达式re.sub函数替换内容的一个比较基础的问题
正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。
1、这里的sub方法,是被编译成‘RegexObject’实例后的实例的方法
Sub(replacement,string[,count =0 ])
1)返回的字符串是在字符串中用RE最左边不重复的匹配来替换。如果模式没有被发现,字符将没有被改变的返回。
2)可选参数count是模式匹配后替换的最大次数;count必须是非负整数。缺省值是0表示替换所有的匹配。
例子:
2、模块级函数:sub方法
注:这些函数(包括sub函数)使用RE字符串作为第一个参数,而后面的参数与相应的“RegexObject”方法的参数相同,返回要么是None,要么是一个‘MatchObject’实例。
(实际sub返回的是字符串,,两者说法不一致,以实际为准)
Re.sub的作用在于:使用给定的替换内容将匹配模式的子字符串(最左端并且非重叠的子字符串)替换掉
3、作为替换的组号
在2的例子中,只是把一个字符串用其他的内容替换掉了。用replace这个字符串方法能轻松达到同样的效果。而正则表达式允许以更灵活的方式进行搜索,同时它们也允许进行功能更强大的替换。
见证re.sub强大功能的最简单方式就是在替换字符串中使用组号。在替换内容中以‘\\n’型式出现的任何转义序列都会被模式中与组n匹配的字符串替换掉。例如,假设要把‘*something*’用‘<em>someting</em>’替换掉,前者是在普通文本文档(比如Email)中进行强调的常用方法,而后者则是相应的HTML代码(用于网页)
这里把所有的* *含的字符串都替换掉了。刚开始我以为只替换*world*。记一笔。
‘叁’ python正则表达式替换问题
importre
s='''01大堆内容02大堆内容03大堆内容'''
t=re.sub(r'([0-3]d)',r' 1',s)
print(t)
‘肆’ python正则表达式是什么呢
python正则表达式如下:
在python中,所谓的“正则表达式”指的是通常被用来检索、替换那些符合某个模式的一段文本。具体而言,它的作用是检测某个字符串是否符合规则和提取网页字符串中想要的数据。
正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅python里面可以用,其他的语言也一样适用。
python的编程特点:
速度快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
‘伍’ python使用正则表达式替换txt内容
s='kfhakl,"dasf,fwg,gs,fatg,ta,",fasf,aga,wr,ga,czxv,"fsafa,rqr,cacv,",dasc'
l=[]
quoted=False
forchins:
ifch=='"':
quoted=notquoted
elifch==','andquoted:
l.append(',')
continue
l.append(ch)
s=''.join(l)
print(s)
‘陆’ python正则表达式替换字符串问题
按照你的要求在不改变name()函数的前提下,把两个"xyz"都替换为"xyz111"的Python程序如下
importre
defname(matched):
newname=matched.group('name')+'111'
returnnewnamestr='helloxyz,nihaoxyz'
strnew=re.sub(r"(?<=hello|nihao)(?P<name>w+)",name,str)
print(strnew)
运行结果
helloxyz111,nihaoxyz111
‘柒’ 用python正则表达式替换字符串问题 我用python写一个计算器,想用正则表达式将字符串中的一些内容替换,
先用正则表达式 sin((d+(.d+)?)) 取第一捕获组的数据
把sin(45)中的角度值angle匹配出来,然后计算出sin(angle)的值value,
最后用正则表达式 "sin("+angle+")" 替换成String.valueOf(value) //value的字符串形式
我给你一个完整的java语言的例子,你看看吧.
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassAA{
publicstaticvoidmain(String[]args){
Strings="1+2*3-(5/6)+sin(45)-ln(100)";
Stringregex="sin\((\d+(\.\d+)?)\)";
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
while(m.find()){
Stringangle=m.group(1);//取出sin函数的角度值
doubled=Double.parseDouble(angle);//把角度值转换成double型
doublevalue=Math.sin(d/180*Math.PI);//把角度值转换成弧度值然后计算sin函数值
s=s.replaceAll("sin\("+angle+"\)",String.valueOf(value));//把相应的sin(45)字符串替换成sin函数值
System.out.println(s);//输出结果,你也可以在程序最后输出结果,也就是在while循环完成后输出结果
}
}
}
运行结果
1+2*3-(5/6)+0.7071067811865475-ln(100)
‘捌’ Python正则表达式如何进行字符串替换实例
import res = 'adds23dd56'ss = re.sub(r'\d', '*', s)>>> ss'adds**dd**'
‘玖’ python如何用正则表达式匹配两个字符串之间的字符串中的某个字符并进行替换
你好,匹配和替换是两个操作,你可以分两步来做。
第一步匹配:
hit=re.search(“(\<question\>\<img.*?question_id=“100”\>)”,inputstr)
第二步替换
result=re.sub(‘”’,‘\”’,inputstr)