鉴于文件名,我想将文件扩展名替换为" .org"
我决定使用replace-regexp-in-string
函数:
(replace-regexp-in-string "\\(.*\\)\..*$" "\\1.org" "file.conserv.module")
输出:
"file.conserv.modul.org"
我想,它会返回" file.conserv.org"比如在Perl程序中:
my $str = 'file.conserv.module';
$str =~ s/(.*)\..*$/$1.org/;
print $str;
我如何获得" file.conserv.org"?
答案 0 :(得分:8)
这可以做你想要的,没有任何正则表达式:
(concat (file-name-sans-extension "file.conserv.module") ".org")
如果你想删除路径:
(concat (file-name-base "file.conserv.module") ".org")
答案 1 :(得分:2)
您需要在Emacs中使用两个反斜杠转义括号和.
(并使用\'
而不是$
来匹配字符串的结尾):
(replace-regexp-in-string "\\(.*\\)\\..*\\'" "\\1.org" "file.conserv.module")
有关双重\
转义的详细信息,请参阅the manual node on the \
character的底部。