SvL_Smile
SvL_Smile
2019-05-06 10:21
采纳率: 33.3%
浏览 639

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

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

原问题:
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • zhangPC
    zhangPC 2019-05-06 23:41
    已采纳

    图片说明

    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上测试运行符合预期,注意中文的编码格式...

    点赞 评论
  • paulhee123
    paulhee123 2019-05-06 10:41

    匹配: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/%,分数/],分数[/;

    点赞 评论

相关推荐