首先,这个问题可能以前曾被问过,但我不确定要搜索什么词组。在正则表达式中使用子字符串两次
我有一个字符串:
Maaaa
我有一个模式:
AAA
我想匹配两次,让我开始指数为1和2.但是我当然只能得到一场比赛(st艺术指数1),因为正则表达式引擎吞噬所有3个“a”,并且不能再次使用它们,留下1个“a”,这不匹配。
我该如何解决这个问题?
谢谢!
首先,这个问题可能以前曾被问过,但我不确定要搜索什么词组。在正则表达式中使用子字符串两次
我有一个字符串:
Maaaa
我有一个模式:
AAA
我想匹配两次,让我开始指数为1和2.但是我当然只能得到一场比赛(st艺术指数1),因为正则表达式引擎吞噬所有3个“a”,并且不能再次使用它们,留下1个“a”,这不匹配。
我该如何解决这个问题?
谢谢!
你可以使用一个前向断言找到一个一个接着2 A的
a(?=aa)
的man perlre
manpage建议:
my @a;
"Maaaa" =~ /aaa(?{push @a,$&})(*FAIL)/;
print join "\n",@a;
print "\n";
这将产生
aaa
aaa
是否有任何理由使用这个丑陋代替简单的7个字符的正则表达式? – 2010-01-23 02:09:02
heh,no。我只是觉得这很有趣。 – 2010-01-23 09:22:45
添加一点色彩的评论,你可以在这里找到更多关于[zero-width] lookahead断言的信息:http://www.regular-expressions.i nfo/lookaround.html – 2010-01-23 00:02:18