在正则表达式中使用子串两次

时间:2010-01-22 23:20:02

标签: regex

首先,此问题之前可能已被问过,但我不确定要搜索的短语。

我有一个字符串:

  

Maaaa

我有一个模式:

  

AAA

我想要匹配两次,给我开始索引为1和2.但当然我只得到一个匹配(开始索引1),因为正则表达式引擎吞噬所有3“a”s而不能再次使用它们,给我留下一个不匹配的“a”。

我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:9)

您可以使用前瞻断言查找a后跟2 a's

a(?=aa)

答案 1 :(得分:0)

man perlre联机帮助页建议:

 my @a;
 "Maaaa" =~ /aaa(?{push @a,$&})(*FAIL)/;
 print join "\n",@a;
 print "\n";

产生

aaa
aaa