我是perl的新手,想知道如何在匹配的模式后替换一些文本。
例如我有一个字符串:
my $string = 'startDate="2014-06-10"';
$string =~ s/startDate="2014-06-10"/startDate=""\g;
此代码替换了我想要的内容,但我希望能够拥有任何日期,并且用空字符串替换日期。所以我想替换startDate="
之后的任何文本,并在10个字符后停止替换。这样做的最佳方式是什么?
由于
答案 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之前,不包含在$&
中