Как заменить некоторые шаблоны пробелами в Perl?

У меня есть файл, в котором есть строки, содержащие некоторые шаблоны, такие как

`XX3 DB3 DBB1 VDD VSS VSSS VDDS параметры инвертора: ln=.045u wn=0,5 мм=мм'

`XX4 DBB1 DB3 VDD VSS VSSS VDDS параметры инвертора: ln=.045u wn=.12u

`XX14 DBB1 DB_TBY VDD VSS VSSS VDDS параметры инвертора: Mpar =(что-то))

Мне нужно заменить эти строки как

`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;}

Но здесь все удаляется, но должно заканчиваться на ' . Поскольку я понятия не имею о том, что все узоры могут присутствовать, эта техника невозможна.


person Gokul.Mohan    schedule 20.05.2019    source источник


Ответы (2)


Похоже, ваше регулярное выражение слишком сложное (и, следовательно, слишком вероятно, что оно будет неправильным). Если вы хотите удалить все после params:, просто сделайте это.

for (@lines) {
  s/params:.+//;
  ...
}
person Dave Cross    schedule 20.05.2019

Если вы хотите сохранить одинарную кавычку в конце, выполните:

for (@lines) {
  s/params:.+/'/;
  ...
}
person Toto    schedule 20.05.2019