+ -
当前位置:首页 → 问答吧 → 如何这样匹配呢?怎么贪婪?

如何这样匹配呢?怎么贪婪?

时间:2011-04-18

来源:互联网

大家好!
  1. a
  2. b
  3. b
  4. b
  5. b
  6. b
  7. d
  8. d
  9. d
复制代码
有如上文本。我只知道匹配a到最后一个b
  1. perl -ne 'print if /a/../d/ and !/d/' test.txt >test01.txt
复制代码
我现想匹配a到第二个b或者第三个,该怎么操作?

作者: perlnewbie   发布时间: 2011-04-18



QUOTE:
大家好!有如上文本。我只知道匹配a到最后一个b我现想匹配a到第二个b或者第三个,该怎么操作?
perlnewbie 发表于 2011-04-18 09:25



自己算....
$ echo -e "a\nb\nb\nb\nb\nb\nb\nd\nd\nd\n" | perl -ne 'if(/a/../d/ and !/d/){print;last if($c++==2)}'
a
b
b

$ echo -e "a\nb\nb\nb\nb\nb\nb\nd\nd\nd\n" | perl -ne 'if(/a/../d/ and !/d/){print;last if($c++==3)}'
a
b
b
b

作者: jason680   发布时间: 2011-04-18

chomp(my @aa = <DATA>);

my $join = join('',@aa);

print $& if ($join =~ /ab{2,3}/);   #得到abbb;
print $& if ($join =~ /ab{2,2}/);   #得到abb;

很笨的方法

作者: leigh111   发布时间: 2011-04-18

原来这么简单啊@!!!!!爱死perl ,谢谢啊...

作者: perlnewbie   发布时间: 2011-04-18

/a/../d/  会返回一个值,可以根据这个判断

作者: yybmsrs   发布时间: 2011-04-18