免费注册 查看新帖 |

Chinaunix

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

如何将结构相似的字符串分组 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-20 17:34 |只看该作者 |倒序浏览
碰到这样一个问题,需要将一些结构非常相似的字符串分组,所谓相似是指符合一定的规则

有一个文本包含一些结构相似的字符组成,
红色字体为注释,非文本内容,name可以视为除xxxx以外的部分

>cat table_names.txt
//规则1 name_xxxx xxx是由符合正则式 ([0-9]|[a-f]){1,4}
friends_information_aaff
friends_information_0101
friends_information_1cf3
friends_information_abcd
pay1_bbs_com_aaff
pay1_bbs_com_0101
pay1_bbs_com_1cf3
pay1_bbs_com_abcd

//规则2  name_xxxx_suffix: xxxx是由符合正则式 ([0-9]|[a-f]){1,4}
friends_information_aaff_name_backup
friends_information_0101_name_backup
friends_information_1cf3_name_backup
friends_information_abcd_name_backup
pay1_bbs_com_aaff_name_backup
pay1_bbs_com_0101_name_backup
pay1_bbs_com_1cf3_name_backup
pay1_bbs_com_abcd_name_backup


//规则3  namexxx xxx是由符合正则式 [0-9]{1,4}
friends_information1
friends_information15
friends_information52
friends_information100
pay1_bbs_com1
pay1_bbs_com15
pay1_bbs_com52
pay1_bbs_com100


//规则4  name_xxx_xxx xxx是由符合正则式  ([0-9]|[a-f]){1,4}
bbs_thread_01_02
bbs_thread_07_05
bbs_thread_08_21
bbs_thread_09_12
.....


//规则5  name_xxxx:  xxxx是由日期组成
friends_information_20091001
friends_information_20090805
friends_information_20090503
friends_information_20090602
pay1_bbs_com_20091001
pay1_bbs_com_20090805
pay1_bbs_com_20090503
pay1_bbs_com_20090602


我的目的是希望可以将这些规则相似的字符串分组,并将每组按name也不相同的串分为小组,取每个小组的首行
希望结果如下即绿色标注的行)

>cat results.txt

friends_information_aaff
pay1_bbs_com_aaff
friends_information_aaff_name_backup
pay1_bbs_com_aaff_name_backup
friends_information1
pay1_bbs_com1
bbs_thread_01_02
friends_information_20091001
pay1_bbs_com_20091001

我按不同的组成规则把整个文本切割成5个片段,然后针对每种情况作非常原始的处理,才勉强得到结果.

由于我经验尚浅,只能生硬的使用这些规则逐一处理,不知道可否有非常快速的识别方式能对这些情况进行分类识别?

感觉对这些字符串分组是关键,这样取首行会很轻松.

[ 本帖最后由 la19850302 于 2009-10-20 18:00 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-10-20 17:41 |只看该作者

回复 #1 la19850302 的帖子

五个规则结果应该只有五行啊?

论坛徽章:
0
3 [报告]
发表于 2009-10-20 17:45 |只看该作者

回复 #2 blackold 的帖子

不是每个规则都只返回一行的

由于每个规则下面内容上有不同,所以还需要将这些内容不同的也找出来

这也是难点

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2009-10-20 17:49 |只看该作者

回复 #3 la19850302 的帖子

name是啥?
你的描述不清楚。

论坛徽章:
0
5 [报告]
发表于 2009-10-20 17:52 |只看该作者

回复 #4 blackold 的帖子

name指的是除xxxx外的字串

[ 本帖最后由 la19850302 于 2009-10-20 18:01 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-10-20 18:01 |只看该作者

回复 #4 blackold 的帖子

name就是除了xxxx以外的部分

需要按不同的name分为小组,取每个小组的首行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP