免费注册 查看新帖 |

Chinaunix

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

正则求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-23 10:57 |只看该作者 |倒序浏览
p='abcdefgh'

用正则如何才能把p转换为 ab-cd-ef-gh 这种形式呢?

论坛徽章:
0
2 [报告]
发表于 2011-11-23 13:11 |只看该作者
re.sub(r'(\w{2})',r'\1-','abcdefgh')

论坛徽章:
0
3 [报告]
发表于 2011-11-23 14:19 |只看该作者
本帖最后由 caesarok 于 2011-11-23 14:28 编辑

回复 2# lkk2003rty


    你好,r'\1-' 这个是什么意思,能解析一下吗?

另外你的结果是 'ab-cd-ef-gh-' 还不符要求。

另外如果用 (?<=左内容)((?!不包含).)*?(?=右内容) 取两个字符串之间的文本这种方式应该如何弄呀

论坛徽章:
0
4 [报告]
发表于 2011-11-23 14:38 |只看该作者
re.sub(r'(\w{2})(?<!gh)',r'\1-','abcdefgh')

论坛徽章:
0
5 [报告]
发表于 2011-11-23 14:47 |只看该作者
回复 3# caesarok


    re.sub(r'(\w{2})(?=\w{2})',r'\1-','abcdefgh')

论坛徽章:
0
6 [报告]
发表于 2011-11-23 16:41 |只看该作者
本帖最后由 caesarok 于 2011-11-23 17:28 编辑

a = '12345678'
b = re.sub(r"(?<=\d)(?=(\d{3})+\b)",",",a)
print b


找到个,。

论坛徽章:
0
7 [报告]
发表于 2011-11-23 17:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2011-11-23 18:20 |只看该作者
to crazylamb

1.小括号包含的表达式所匹配到的字符串” 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。表达式后边的部分,可以引用前面 “括号内的子匹配已经匹配到的字符串

换句话说。这里的\1 表示的就是查找到的\w{2}的值,而后面的那个“-”则是要替换的值。

2.按照查找的原理,我猜测是一次性查完再替换的,而不是替换一个再查下一个。

论坛徽章:
0
9 [报告]
发表于 2011-11-24 08:46 |只看该作者
回复 6# caesarok


>>> a='1234567890'
>>> re.sub(r'(\d{3})(?=\d{1})',r'\1,',a[::-1])[::-1]
'1,234,567,890'
>>>

论坛徽章:
0
10 [报告]
发表于 2011-11-24 09:49 |只看该作者
回复 7# crazylamb


    你好:
      1、就是匹配的第几个括号的匹配内容。跟组的概念有关吧。
      2、先讲一下我个人对(?<=...)和(?=...)的理解。
a.(?<=...)可以认为叫做回顾。
b.(?=...)可以叫预测。
3、举例吧。
>>> re.sub('(?<=\w{2})(?=\w{2})','-','abcdefgh')
'ab-c-d-e-f-gh'
>>> re.sub('(?<=\w{1})(?=\w{2})','-','abcdefgh')
'a-b-c-d-e-f-gh'这是为什么?
以'|'代表目前匹配的位置。
a.开始时:|abcdefgh
b.a|bcdefgh,这时回顾前面是有两个字符吗?答案是‘不是’。
c.ab|cdefgh,这时回顾前面是有两个字符吗?答案是‘是’。那么预测后面是否还有两个字符?答案是‘是’,所以匹配了,ab-cdefgh
c.abc|defgh,这时回顾前面是有两个字符吗?答案是‘是’。那么预测后面是否还有两个字符?答案是‘是’,所以匹配了,ab-c-defgh
依此类推。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP