Замена всех слов, кроме одного - регулярное выражение perl - PullRequest
1 голос
/ 23 января 2011

я пытаюсь иметь регулярное выражение, которое изменится "dir1/dir2/" на "dir1/dir3/" только если dir2 не tmp, а если tmp, я хочу, чтобы оно не изменилось и осталось "dir1/tmp".

Я думаю, что мне нужно регулярное выражение, но я не могу справиться.

Ответы [ 3 ]

2 голосов
/ 23 января 2011

Вы можете использовать отрицательное прогнозное утверждение, чтобы выполнить подстановку, только если после /dir1:

: *1003*
s#(dir1/)(?!tmp/)[^/]+#\1/dir3#;

см.

2 голосов
/ 23 января 2011
s{^([^/]+)/(?!tmp/)[^/]+/}{$1/dir3/}
2 голосов
/ 23 января 2011

Вы можете использовать оператор if перед применением проверки s //// ...., используя m //, если tmp не существует, а затем заменить.

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