Perl模式匹配求助

Perl模式匹配求助

编程中遇到一个小的技术问题,希望高人指点。

一个很长的字符串,例如
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文件定义了每一个小字符串的长度和名称,然后将长度读取到一个数组中,请问能否使用模式识别的方法是用数组中定义的长度将长字符串进行分割,并将分割结果存储到一个新的数组中。
perldoc -f unpack
没太看懂你说的

感觉你是想要这个  @array = split(/\t/,$string);
意思就是想把一个很长的字符串$a,分割成不定长度的小字符串组成的字符串数组@b,想用正则式实现。@b中每一个字符串长度在另外一个数组@c中定义,我想知道有什么好的方法实现没有。
觉得可以用 substr()


QUOTE:
原帖由 hamas 于 2008-3-27 11:38 发表
意思就是想把一个很长的字符串$a,分割成不定长度的小字符串组成的字符串数组@b,想用正则式实现。@b中每一个字符串长度在另外一个数组@c中定义,我想知道有什么好的方法实现没有。

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

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

$regex = '';
for my $length (@lengtharray) {
  $regex .= '(.{' . $length . '})';
}

if (@matches = $str =~ qr/$regex/) {
  print join(" ", @matches), "\n";
}