2014-06-11 109 views
0

我是Perl新手,想知道如何在匹配模式後替換某些文本。匹配後替換字符串

比如我有一個字符串:

my $string = 'startDate="2014-06-10"'; 
    $string =~ s/startDate="2014-06-10"/startDate=""\g; 

此代碼代替我想要什麼,但我希望能夠有任何的日期和它替換爲空字符串的日期。所以我想在startDate="之後替換任何文字,並在10個字符後停止替換。做這個的最好方式是什麼?

感謝

回答

4

假設你的日期始終以這種格式,你可以用一個更一般的正則表達式替換日期:

my $string = 'startDate="2014-06-10"'; 
$string =~ s/startDate="\d{4}-\d{1,2}-\d{1,2}"/startDate=""/g; 

既然startDate=""保持你真的只需要更換相同日期本身:

my $string = 'startDate="2014-06-10"'; 
$string =~ s/\d{4}-\d{1,2}-\d{1,2}//g; 
+0

工程很好。謝謝 :) –

1

假設perl的> 5.10:

s/startDate="\K[^"]{10}//g; 

取代10個字符,它們不是"以下startDate="。使用\K意味着你不需要更換你想保留位:

\ K,這將導致正則表達式引擎「保持」一切,它已在\ķ之前匹配 並沒有包括在$ &