2013-03-25 93 views
-1

我需要在正則表達式中刪除除匹配組以外的所有組。一個玩具的例子是:正則表達式:除去組除外

echo 'spam 123 ham 345 eggs' | perl -pe 's/(\d+)/SOMETHING/g' 

123 345 

什麼perl正則表達式將刪除除匹配的組以外的所有組件?匹配組可以比數字更復雜 - 我可以定義要匹配的組,但組外可以包含任何隨機字符

+0

問題是什麼? – iamnotmaynard 2013-03-25 16:45:00

+0

那麼你是說基於由行開始,行結束和空白字符定義的字符串段,你想過濾除了那些只包含數字的所有段嗎? – 2013-03-25 16:45:22

回答

2

只需加入所有匹配。我不知道Perl,但是像這樣的東西可能會工作:

$result = join('', $subject =~ m/\s*\d+\s*/g); 
+0

在Perl中,顯式分隔符必須作爲join的第一個參數提供。空字符串會很好:'$ result = join'',$ subject =〜/.../ g'。 – amon 2013-03-25 16:57:44

+0

@amon:謝謝!我希望現在可以運作。 – 2013-03-25 17:00:20