问题
我有一个文件充满了像
convert.these.dots.to.forward.slashes/but.leave.these.alone/i.mean.it
我想搜索和替换这样我得到
convert/these/dots/to/forward/slashes/but.leave.these.alone/i.mean.it
这 。转换为 / 直到第一个正斜杠
问题
如何编写正则表达式搜索和替换来解决我的问题?
尝试的解决方案
我尝试在 perl 中使用look behind,但是没有实现可变长度的look behinds
$ echo "convert.these.dots.to.forward.slashes/but.leave.these.alone/i.mean.it" | perl -pe 's/(?<=[^\/]*)\./\//g'
Variable length lookbehind not implemented in regex m/(?<=[^/]*)\./ at -e line 1.
解决方法
实现了可变长度前瞻,因此您可以使用这个肮脏的技巧
$ echo "convert.these.dots.to.forward.slashes/but.leave.these.alone/i.mean.it" | rev | perl -pe 's/\.(?=[^\/]*$)/\//g' | rev
convert/these/dots/to/forward/slashes/but.leave.these.alone/i.mean.it
这个问题有更直接的解决方案吗?