替换除一个之外的所有单词 - 正则表达式perl

时间:2011-01-23 09:41:27

标签: regex perl string

我尝试进行常规表达,将"dir1/dir2/"更改为"dir1/dir3/" 仅当dir2不是tmp时,如果它是tmp,我希望它不会更改并保持"dir1/tmp"

我认为我需要一个前瞻性的正则表达式,但我无法管理。

3 个答案:

答案 0 :(得分:2)

你可以在使用m //应用s //// ....之前使用if语句,如果tmp不在那里然后替换。

答案 1 :(得分:2)

只有在tmp之后没有/dir1时,您才可以使用否定前瞻断言进行替换:

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

See it

答案 2 :(得分:2)

s{^([^/]+)/(?!tmp/)[^/]+/}{$1/dir3/}