标签: regex perl string
我尝试进行常规表达,将"dir1/dir2/"更改为"dir1/dir3/" 仅当dir2不是tmp时,如果它是tmp,我希望它不会更改并保持"dir1/tmp"。
"dir1/dir2/"
"dir1/dir3/"
dir2
tmp
"dir1/tmp"
我认为我需要一个前瞻性的正则表达式,但我无法管理。
答案 0 :(得分:2)
你可以在使用m //应用s //// ....之前使用if语句,如果tmp不在那里然后替换。
答案 1 :(得分:2)
只有在tmp之后没有/dir1时,您才可以使用否定前瞻断言进行替换:
/dir1
s#(dir1/)(?!tmp/)[^/]+#\1/dir3#;
See it
答案 2 :(得分:2)
s{^([^/]+)/(?!tmp/)[^/]+/}{$1/dir3/}