Perl: заменить строку, которая соответствует шаблону - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу заменить всю строку, если соответствует шаблону в начале строки. Моя строка $foo = "I have a dog - cat". Теперь, если регулярное выражение соответствует «У меня есть», строка заменяется на «CHECKED»

Я пытался

$foo =~ tr /I have a/CHECKED/

Вывод: CHECKED dog -cat nad Я не хочу добавлять полное предложение в регулярное выражение. Как у $foo =~ /I есть Dog -cat/CHECKED;

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019
$foo = "I have a dog - cat"

$foo =~ s/I have a.*/CHECKED/

команда perl tr/// или y/// для транслитерации от буквы к букве
go https://perldoc.perl.org/perlop.html#Quote-Like-Operators

1 голос
/ 16 апреля 2019

Вы должны сделать так, чтобы шаблон соответствовал всей строке, если вы хотите заменить всю строку:

$foo =~ s/.*I have a.*/CHECKED/;

В качестве альтернативы просто присвойте строку с новым значением, если оно соответствует шаблону:

$foo = 'CHECKED' if $foo =~ /I have a/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...