python正则表达式替换字符串问题 10
对第1条运行结果有疑问,另一个问题是:如果想要把两个“xyz”都替换为“xyz111”,返回“helloxyz111,nihaoxyz111”,能不能在不修改name()...
对第1条运行结果有疑问,另一个问题是:如果想要把两个“xyz”都替换为“xyz111”,返回“hello xyz111, nihao xyz111”,能不能在不修改name()函数的前提下,仅通过修改正则达到效果,试过下面几种写法都不对,我认为最接近正确答案的应该是第6种了,但还是差一些def name(matched): newname = matched.group('name') + "111" return newnamestr = "hello xyz, nihao xyz"# 按我的理解字符串最终应该被替换为“xyz”,\g<1>指代第一个子组,不就是“xyz”吗strnew1 = re.sub("hello (\w+), nihao \1", "\g<1>", str)strnew2 = re.sub("hello (?P<name>\w+), nihao (?P=name)", "\g<name>", str)strnew3 = re.sub("hello (?P<name>\w+)", name, str)strnew4 = re.sub("hello (?P<name>\w+), nihao (?P=name)", name, str)strnew5 = re.sub("hello (?P<name>\w+), nihao (?P=name)", name, str, 1)# 返回的是"hello xyz, nihao xyz",没有被替换strnew6 = re.sub("(?<=hello )(?P<name>\w+), (?<=nihao )(?P=name)", name, str)
展开
展开全部
按照你的要求在不改变name()函数的前提下,把两个"xyz"都替换为"xyz111"的Python程序如下
import re
def name(matched):
newname=matched.group('name')+'111'
return newname
str = 'hello xyz, nihao xyz'
strnew = re.sub(r"(?<=hello |nihao )(?P<name>\w+)", name, str)
print(strnew)
运行结果
hello xyz111, nihao xyz111
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询