当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 正则表达式的泛搜索和替换怎么实现?
帖子发表于 : 2016-06-30 12:57 

注册: 2007-03-03 13:36
帖子: 149
送出感谢: 2
接收感谢: 0 次
例子如下:找到后怎么再进行泛替换?

1.ABAB型
ABAB替换成AB
adodoy->adoy
aoyoyhf->aoyhf
ABAB替换成ABABAB
adodoy->adododoy
aoyoyhf->aoyoyoyhf

2.ABB型
ABB型替换成BBA
wlook->wllok
dlaay->dllay

3.ABA型
ABA型替换成BAB
where->whrer
orogeny->rorgeny

非常感谢您的关注 :em06


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 正则表达式的泛搜索和替换怎么实现?
帖子发表于 : 2016-07-01 9:26 
头像

注册: 2007-09-29 3:09
帖子: 5777
送出感谢: 0 次
接收感谢: 5
试了一下,至少sed里面的正则是可以这么做的,其他地方的正则应该类似,更不用说python什么的

1. 找重复出现的ABAB可以用(..)\1来搜到,比如说

1) ABAB变AB
代码:
$ echo adodoy|sed -r 's/(..)\1/\1/'
adoy

2) ABAB变ABABAB
代码:
echo adodoy|sed -r 's/(..)\1/\1\1\1/'


2. 找ABB可以用(.)(.)\2
1) ABB变AAB,你的要求是说ABB变BBA,可是给出的例子却不同,不过反正差不多,调整一下替换内容的顺序即可
代码:
echo wlook|sed -r 's/(.)(.)\2/\1\1\2/'
wllok


第三个不回答了,反正和第二个差不多,自己想去,不要那么容易做伸手党

另外有个要说清楚的地方,正则只管匹配/搜索,至于替换那是各家编辑器的事情(或者各种脚本程序),只不过通常后者都提供了将前者匹配到的某些部分记录下来并且应用在替换过程中的功能而已,如上文sed中的s///是替换,\1\2是在sed的替换命令中表示前面正则搜索中的子表达式


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 正则表达式的泛搜索和替换怎么实现?
帖子发表于 : 2016-07-01 10:03 

注册: 2007-03-03 13:36
帖子: 149
送出感谢: 2
接收感谢: 0 次
HuntXu 写道:
试了一下,至少sed里面的正则是可以这么做的,其他地方的正则应该类似,更不用说python什么的

1. 找重复出现的ABAB可以用(..)\1来搜到,比如说

1) ABAB变AB
代码:
$ echo adodoy|sed -r 's/(..)\1/\1/'
adoy

2) ABAB变ABABAB
代码:
echo adodoy|sed -r 's/(..)\1/\1\1\1/'


2. 找ABB可以用(.)(.)\2
1) ABB变AAB,你的要求是说ABB变BBA,可是给出的例子却不同,不过反正差不多,调整一下替换内容的顺序即可
代码:
echo wlook|sed -r 's/(.)(.)\2/\1\1\2/'
wllok


第三个不回答了,反正和第二个差不多,自己想去,不要那么容易做伸手党

另外有个要说清楚的地方,正则只管匹配/搜索,至于替换那是各家编辑器的事情(或者各种脚本程序),只不过通常后者都提供了将前者匹配到的某些部分记录下来并且应用在替换过程中的功能而已,如上文sed中的s///是替换,\1\2是在sed的替换命令中表示前面正则搜索中的子表达式



非常感谢~~~我也正在学习,只是一旦不用就会忘记~~~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译