【问题标题】:How to replace some patterns with whitespace in perl?如何在perl中用空格替换一些模式?
【发布时间】:2019-10-06 14:32:07
【问题描述】:

我有一个文件,其中有包含一些模式的行

`XX3 DB3 DBB1 VDD VSS VSSS VDDS 反相器参数:ln=.045u wn=0.5 mm=mm'

`XX4 DBB1 DB3 VDD VSS VSSS VDDS 反相器参数:ln=.045u wn=.12u

`XX14 DBB1 DB_TBY VDD VSS VSSS VDDS 反相器参数:Mpar =(Something))

我需要将这些行替换为

`XX3 DB3 DBB1 VDD VSS VSSS VDDS 反相器

`XX4 DBB1 DB3 VDD VSS VSSS VDDS 反相器

`XX14 DBB1 DB_TBY VDD VSS VSSS VDDS 反相器

那是我想删除参数之后的所有内容,它可以是任何东西,直到换行。

    foreach(@lines){
     $_ =~ s/params: .*?[a-z,A-Z,),0-9,mm,m]'/ /g;}

但这里所有内容都在删除,但应该以 ' 结尾。由于我不知道所有模式都可以存在什么,因此这种技术是不可能的。

【问题讨论】:

    标签: regex perl file-handling perlscript


    【解决方案1】:

    看起来您的正则表达式太复杂了(因此很可能出错)。如果您想删除params: 之后的所有内容,请执行此操作。

    for (@lines) {
      s/params:.+//;
      ...
    }
    

    【讨论】:

      【解决方案2】:

      如果要在末尾保留单引号,请执行以下操作:

      for (@lines) {
        s/params:.+/'/;
        ...
      }
      

      【讨论】:

        猜你喜欢
        • 2011-07-10
        • 1970-01-01
        • 1970-01-01
        • 2019-11-19
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 2016-07-20
        • 2010-11-19
        相关资源
        最近更新 更多