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) 展开
 我来答
紫薇参星
科技发烧友

2018-08-26 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3517万
展开全部

按照你的要求在不改变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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式