Perl regrex: исключить шаблон из соответствия - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть /home/user/abc/def/mng, и я хотел бы заменить /home/user, или я должен был до этого проверить, если строка содержит $ HOME, затем исключить $ HOME или /home/user из сопоставления и обработать что-либо в шаблоне /abc/def/mng .

Как отговорить?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Это не очень умно, но он делает то, что я думаю, вы спрашиваете:

use strict;
use warnings;
use Data::Dumper;

my $variable = '/home/jtym/abc/def/mng';
my $home_if_exists;

if($variable =~ /^$ENV{HOME}/) {
    $variable =~ s/^$ENV{HOME}//;
    $home_if_exists = $ENV{HOME};
}

$variable =~ s/\//SLASH/g;
$variable = $home_if_exists.$variable;

print Dumper($variable);

$ VAR1 = '/ home / jtymSLASHabcSLASHdefSLASHmng';

0 голосов
/ 01 ноября 2018

Если я хорошо понял ваш вопрос, вам нужно что-то вроде этого:

my $newstring = $oldstring =~ s/(\/home\/user)|(\$HOME)//gr; 

Посмотрите здесь: http://tpcg.io/xukvqn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...