- 论坛徽章:
- 1
|
需要处理一段文本,每次读固定的个数N个,用正则(\w{n})的话,每次搜索的步进为N,希望搜索的步进可以控制,为1或者其他值。
用固定数组实现了一个,如下,希望改成纯正则实现,请正则达人指点,谢谢。- #!perl
- use 5.010;
- use strict;
- use warnings;
- use utf8;
- $_=q(甲 乙 丙 丁 戊 己 庚 辛 壬 癸);
- sub make_fixed_length_queue{
- my $arg_length = shift;
- my @myqueue=();
- return sub{
- my ($arg_action,$arg_opt)=@_;
- given($arg_action){
- when (undef){
- return \@myqueue;
- };
- when(/push/){
- push @myqueue,$arg_opt;
- return ($#myqueue>=$arg_length)?(shift @myqueue):undef;
- };
- }
- }
- }
- my $S_queue_3=make_fixed_length_queue 3;
- say join",",@{$S_queue_3->()};
- while(/(\w+)/g){
- $S_queue_3->('push',$1);
- say join",",@{$S_queue_3->()};
- }
复制代码 输出:
Process started >>>
甲
甲,乙
甲,乙,丙
乙,丙,丁
丙,丁,戊
丁,戊,己
戊,己,庚
己,庚,辛
庚,辛,壬
辛,壬,癸
<<< Process finished. |
|