我需要一些Perl正則表達式幫助。下面的代碼片段:Perl regex如何重新使用前一場比賽的一部分進行下一場比賽?
use strict;
use warnings;
my $str = "In this example, A plus B equals C, D plus E plus F equals G and H plus I plus J plus K equals L";
my $word = "plus";
my @results =();
1 while $str =~ s/(.{2}\b$word\b.{2})/push(@results,"$1\n")/e;
print @results;
產生以下輸出:
A plus B D plus E 2 plus F H plus I 4 plus J 5 plus K
我希望看到的是這樣的,一個角色已經匹配可以在新的比賽在不同的上下文中出現:
A plus B D plus E E plus F H plus I I plus J J plus K
如何更改正則表達式以獲得此結果?感謝---丹
感謝Greg,Sinan和Michael的快速反應。完全披露:引用的例子是一種簡化,$ str實際上是來自產品用戶手冊的500k字符的文本,$ word是可能的單詞匹配的長列表中的一個元素,{2}實際上是{35}並且可以捕獲任何字符在文本中的「加號」附近找到,以便構建文檔中使用「加號」的完整一致性,因此獲得最快性能的分數--- Dan – dlw 2009-08-16 03:52:21