如何在Perl中用空格替换某些模式?

时间:2019-05-20 08:43:32

标签: regex perl file-handling perlscript

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

`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逆变器

我想删除params之后的所有内容,可以是任何内容,直到换行符为止。

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

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

2 个答案:

答案 0 :(得分:2)

看起来您的正则表达式太复杂了(因此很可能是错误的)。如果您想删除params:之后的所有内容,只需这样做。

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

答案 1 :(得分:1)

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

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