免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2306 | 回复: 8
打印 上一主题 下一主题

请教正则表达式替换问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-25 17:36 |只看该作者 |倒序浏览
有这样的字串
"""
'testa','testb','myflag::tesac','myflag::testd'
"""
将形如'myflag::*'的字串都换成*.
上面字串转换后应该是这样:
"""
'testa','testb',tesac,testd
"""
请教怎么做啊?谢谢了!

论坛徽章:
0
2 [报告]
发表于 2009-05-25 23:24 |只看该作者
试试:

  1. re.sub(r"[^']*?::", '', s)
复制代码

论坛徽章:
0
3 [报告]
发表于 2009-05-26 00:17 |只看该作者

回复 #2 izhier 的帖子

谢谢,这个好象还不行,我还要把类似于“'myflag::tesac'”的两个单引号也要去掉。

论坛徽章:
0
4 [报告]
发表于 2009-05-26 08:52 |只看该作者
s是字符串

print re.sub(r"'myflag::(.*?)'", r"\1", s)

论坛徽章:
0
5 [报告]
发表于 2009-05-26 10:50 |只看该作者

回复 #4 xiaoyu9805119 的帖子

非常感谢,正解!还没看懂,学习中:
(.*?)这个匹配子组时我觉得(.*)也应该是可以的,好象不行。
r"\1"这个东东一直不知如何用,第一次见识,继续学习.
再次感谢!

论坛徽章:
0
6 [报告]
发表于 2009-05-26 10:58 |只看该作者
.*这地方不加?会一直匹配到最后,也就是常说的贪婪模式哦。

论坛徽章:
0
7 [报告]
发表于 2009-05-26 11:20 |只看该作者

回复 #6 xiaoyu9805119 的帖子

谢谢,明白了,这个?应该是最小匹配了!
再请教一下r"\1",这个意思是不是引用第1对括号内匹配到的字符串列表(逐个引用,在这里引用来进行替换)?

论坛徽章:
0
8 [报告]
发表于 2009-05-26 11:24 |只看该作者
print re.sub(r"(\w+) (\w+)",r"\2 \1", "aaa bbb")
\1就是第一个括号,2是第二个...

上面就是调换两个匹配内容

论坛徽章:
0
9 [报告]
发表于 2009-05-26 11:27 |只看该作者
谢谢,受教了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP