python正则表达式替换字符串
㈠ 用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,字符串正则,替换最后一个特定字符
在 python 中, str.replace 函数接受的第一个参数并不是正则表达式,而是字符串。
所以你会看到,运行
print'123(abc)123'.replace('(abc)','!')
的结果是
'123!123'
想要达到你所说的效果,可以试一试 python 中的 re 模块
例如:
importre
replace_reg=re.compile(r'abc$')
printreplace_reg.sub('X','123abc')
的运行结果为:
'123X'
㈢ python的字符串替换问题
楼主搞生物的?很像碱基对啊。replace是替换整串字符串的,但是这里不方便,因为你把AA替换成TT后,就变成TTTT,然后再替换,变为AAAA,没有达到效果,除非你用另外的字符代替,不过,这样就没有python的简洁优美了,所以这个问题用re最方便,下面是代码:
#coding=utf-8
importre
astr='AATTCCGG'
charmap={'AA':'TT','TT':'AA','CC':'GG','GG':'CC'}
new=re.sub(r'AA|TT|CC|GG',lambdax:charmap[x.group(0)],astr)
print(new)#python2为printnew
㈣ python如何用正则表达式匹配两个字符串之间的字符串中的某个字符并进行替换
你好,匹配和替换是两个操作,你可以分两步来做。
第一步匹配:
hit=re.search(“(\<question\>\<img.*?question_id=“100”\>)”,inputstr)
第二步替换
result=re.sub(‘”’,‘\”’,inputstr)
㈤ python正则表达式是什么
python正则表达式是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。
1950 年,数学家斯蒂芬·科尔·克莱尼利用称之为“正则集合”的数学符号来描述此模型。肯·汤普逊将此符号系统引入编辑器 QED,随后是 UNIX 上的编辑器 ed,并最终引入 grep。自此以后,正则表达式被广泛地应用于各种 UNIX 或类 UNIX 系统的工具中。目前,许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式常用的特殊字符:
:将下一个字符标记为一个特殊字符、一个原义字符(Identity Escape,有 "^" "$" "(" ")" "*" "+" "{" "|" 共计12个)、一个向后引用(backreferences)或一个八进制转义符。例如“n”匹配字符“n”,“ ”匹配一个换行符,“\”匹配“”,“(”则匹配“(”。
^:匹配输入字符串的开始位置。如果设置了正则表达式的多行属性,“^”也可以匹配“ ”或“ ”之 后的位置。
[a-z]:字符范围,匹配指定范围内的任意字符。例如“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
s:匹配任何空白字符,包括空格、制表符、换页符等,等效于“[f v]”。注意 Unicode 正则表达式 会匹配全角空格符。
㈥ python正则表达式是什么呢
python正则表达式如下:
在python中,所谓的“正则表达式”指的是通常被用来检索、替换那些符合某个模式的一段文本。具体而言,它的作用是检测某个字符串是否符合规则和提取网页字符串中想要的数据。
正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅python里面可以用,其他的语言也一样适用。
python的编程特点:
速度快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
㈦ 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中如何使用正则表达式从字符串中删除特定字符
可以使用 one_str.replace("EventApplyCheckIn:\/\/", "") 把它替换为空就好
㈨ 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正则表达式如何用已知字符串(如"aaa")替换文件中匹中的分组内容,不是匹中的全部,而是其中一个组
import re
s = '1234567890'
pattern = re.compile(r'(34)(\d+)(78)')
print(pattern.sub(r'\1aaa\3',s))
把两边的也加括号,替换的时候加上 \1 \3就行