免费注册 查看新帖 |

Chinaunix

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

Perl模式匹配求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-27 10:44 |只看该作者 |倒序浏览
编程中遇到一个小的技术问题,希望高人指点。

一个很长的字符串,例如
3121 147  15 153  16 160  232046 130  14 155  362016     190 1942020 1892010****  35  35  342022  77  3201300130210001272001 154 1582046 1402010 137 1372058 1322026 170 184 192 193 180 189 201 196//////////////////////
这个字符串我需要进行分割成小的字符串,但是分割的小字符串长度不固定,我通过XML文件定义了每一个小字符串的长度和名称,然后将长度读取到一个数组中,请问能否使用模式识别的方法是用数组中定义的长度将长字符串进行分割,并将分割结果存储到一个新的数组中。

论坛徽章:
0
2 [报告]
发表于 2008-03-27 10:48 |只看该作者
perldoc -f unpack

评分

参与人数 1可用积分 +5 收起 理由
flw + 5 我很赞同

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2008-03-27 10:56 |只看该作者
没太看懂你说的

感觉你是想要这个  @array = split(/\t/,$string);

论坛徽章:
0
4 [报告]
发表于 2008-03-27 11:38 |只看该作者

回复 #3 hitsubunnu 的帖子

意思就是想把一个很长的字符串$a,分割成不定长度的小字符串组成的字符串数组@b,想用正则式实现。@b中每一个字符串长度在另外一个数组@c中定义,我想知道有什么好的方法实现没有。

论坛徽章:
0
5 [报告]
发表于 2008-03-27 12:01 |只看该作者
觉得可以用 substr()

论坛徽章:
0
6 [报告]
发表于 2008-03-27 12:37 |只看该作者
原帖由 hamas 于 2008-3-27 11:38 发表
意思就是想把一个很长的字符串$a,分割成不定长度的小字符串组成的字符串数组@b,想用正则式实现。@b中每一个字符串长度在另外一个数组@c中定义,我想知道有什么好的方法实现没有。

字符串 里面    你要取出的小字符串  如果是用特定的符号隔开  比如上面你写的例子  就用 split

如果没有的话  就用  unpack 最好了

[ 本帖最后由 hitsubunnu 于 2008-3-27 12:40 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-03-27 20:50 |只看该作者
$regex = '';
for my $length (@lengtharray) {
  $regex .= '(.{' . $length . '})';
}

if (@matches = $str =~ qr/$regex/) {
  print join(" ", @matches), "\n";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP