- 论坛徽章:
- 0
|
碰到这样一个问题,需要将一些结构非常相似的字符串分组,所谓相似是指符合一定的规则
有一个文本包含一些结构相似的字符组成,
红色字体为注释,非文本内容,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 编辑 ] |
|