匹配后替换字符串

时间:2014-06-11 15:03:47

标签: regex string perl replace

我是perl的新手,想知道如何在匹配的模式后替换一些文本。

例如我有一个字符串:

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

此代码替换了我想要的内容,但我希望能够拥有任何日期,并且用空字符串替换日期。所以我想替换startDate="之后的任何文本,并在10个字符后停止替换。这样做的最佳方式是什么?

由于

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

假设perl> 5.10:

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

替换"之后不是startDate="的10个字符。使用\K意味着您不需要替换想要保留的位:

  

\ K,这会导致正则表达式引擎“保留”它匹配的所有内容   在\ K之前,不包含在$&