免费注册 查看新帖 |

Chinaunix

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

怎么删除字符串中相同的内容? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-11 16:34 |只看该作者 |倒序浏览
$html="123.ccc.ddd123.ccc.ddd333.ccc.ddd444.ccc.ddd";
怎么能处理成
$html="123.ccc.ddd333.ccc.ddd444.ccc.ddd";这个样子

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-09-11 16:38 |只看该作者
为什么不是处理成:
"123.cd4" 这个样子?
我这样才叫没有重复。

论坛徽章:
0
3 [报告]
发表于 2007-09-11 16:51 |只看该作者
按LZ的意思, $HTML每一子项应该是xxx.ccc.ddd ???

论坛徽章:
0
4 [报告]
发表于 2007-09-11 16:55 |只看该作者
嗯,就是3楼那意思

论坛徽章:
0
5 [报告]
发表于 2007-09-11 17:04 |只看该作者
一个笨办法:
1: 将"123.ccc.ddd123.ccc.ddd333.ccc.ddd444.ccc.ddd"拆分成
123.ccc.ddd
123.ccc.ddd
333.ccc.ddd
444.ccc.ddd
到list中.

可用@items = split(/([^\.]*\.ccc\.ddd)/, $html);
再去掉@items中为""的元素实现
不知道有没有一次拆分搞定的????

2: 比较

论坛徽章:
0
6 [报告]
发表于 2007-09-11 17:07 |只看该作者
这个方法我会我主要想知道有没有用个s///一次能搞定的办法

论坛徽章:
0
7 [报告]
发表于 2007-09-11 17:10 |只看该作者
如果有重复的项, 它们一定相邻吗?

论坛徽章:
0
8 [报告]
发表于 2007-09-11 17:54 |只看该作者
不一定

论坛徽章:
0
9 [报告]
发表于 2007-09-11 18:17 |只看该作者
2句的实现.

$html = "123456.ccc.ddd333.ccc.ddd123.ccc.ddd333.ccc.ddd444.ccc.ddd444.ccc.ddd123.ccc.ddd333.ccc.ddd123.ccc.ddd333.ccc.ddd444.ccc.ddd444.ccc.ddd123.ccc.ddd333.ccc.ddd123.ccc.ddd333.ccc.ddd444.ccc.ddd444.ccc.ddd123.ccc.ddd333.ccc.ddd123456.ccc.ddd333.ccc.ddd444.ccc.ddd444.ccc.ddd";

$html =~ s/(?<=\.ddd)(.+\.ccc\.ddd)(?=.*\1)//g;
$html =~ s/(?<=^)(.+\.ccc\.ddd)(?=.*\1)//g;

print "$html\n";  ### 123.ccc.ddd123456.ccc.ddd333.ccc.ddd444.ccc.ddd



正在努力用1句实现.....
搞定, 就是合并了上面的2句:

$html =~ s/((?<=^)|(?<=\.ddd))(.+\.ccc\.ddd)(?=.*\2)//g;

[ 本帖最后由 Lonki 于 2007-9-13 11:02 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-09-11 22:11 |只看该作者
你是在学习正则表达式还是要解决问题?如果是学习正则表达式可以理解。
如果是解决问题的话,为什么一定要用一句实现?多写几行不是更清晰么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP