perl将文本中的日期和数字替换

$content="今天是2019年12月11日,1月份,气温40度,空气质量达标90%,分数1/4";
#将日期用小括号替换,将数字用方括号替换
##结果如下
$content="今天是(2019年12月11日),(1月)份,气温[40]度,空气质量达标[90%],分数[1/4]";

原问题:
图片说明

图片说明

my $v="今天是2019年12月11日,1月份,气温40度,空气质量达标90%,分数1/4";
$v =~ s/(\d+%|\d+\/\d+|\d+)(?!\d+|年|月|日)/[\1]/g;
$v =~ s/((?:\d+年)?\d+月(?:\d+日)?|\d+年|\d+日)/(\1)/g;
print $v;

第一个替换操作,匹配非日期的数字,替换成[数字]
第二个替换操作,匹配日期,替换成(日期)
以上在active perl5.2上测试运行符合预期,注意中文的编码格式...

匹配:m//(还可以简写为//,略去m)
替换:s///

$content="今天是2019年12月11日,1月份,气温40度,空气质量达标90%,分数1/4";
$content=~ s/今天是/今天是(/;
$content=~ s/日,/日),(/;
$content=~ s/月份/月)份/;
$content=~ s/气温/气温[/;
$content=~ s/度/]度/;
$content=~ s/达标/达标[/;
$content=~ s/%,分数/],分数[/;