Emacs是一個行之後混亂的語法像
fileparse($file, qr"\.[^.]+$");
,並認爲該文件的其餘部分是一個字符串。我該如何解決?
Emacs是一個行之後混亂的語法像
fileparse($file, qr"\.[^.]+$");
,並認爲該文件的其餘部分是一個字符串。我該如何解決?
Emacs被qr
表達式中的引號混淆。標準正則表達式分隔符(/)的工作原理如下:
fileparse($file, qr/\.[^.]+$/);
事實上,幾乎其他任何東西似乎都起作用。
fileparse($file, qr{(\.[^.]+$/});
fileparse($file, qr*\.[^.]+$*);
fileparse($file, qr#\.[^.]+$#);
我的版本的VIM不會被引號混淆,但我知道老版本的VIM做了。放置引號是非常令人困惑的,因爲它使qr
表達式看起來像一個字符串(它不是)。在正則表達式中使用引號作爲分隔符通常是不好的策略,儘管它在技術上是合法的。
但是,真正重要的問題是什麼fileparse
?這不是標準的Perl函數。我假設這是從File::Basename
導入的?這是正確的嗎?
根據我的文檔,fileparse
中的第二個參數假設爲數組而不是引用的正則表達式。
*如果給出'@ suffixes',每個元素都是一個模式(或者一個字符串或一個'qr //'), '$ filename'。*因此,OP有一個由單個元素組成的後綴列表。沒有錯。 –
emacs如何使用'''作爲分隔符?這是用於防止插值的一種。我無法檢查,因爲Emacs嚇倒了我的bejesus :-P –
David W.可能有正確的答案。同樣,最好避免使用"
作爲分隔符,但有時您需要使用'
作爲分隔符來防止插值,因此這可能對此情況下的某個人有用。使用一個也是如此嚴重
fileparse($file, qr"\.[^.]+$"); #"# highlight fix
一個例子:
因此,如果由於某種原因,你真正想要的報價分隔符(或防止使用'
插值),你總是可以做這樣的事情
s'hi'by'; #'# highlight fix
注意:第二個#
用於在編輯器中觸發註釋高亮顯示,以便highlight fix
顯示爲註釋。
這不是因爲Perl正則表達式,而是由於您選擇的模式標記。只要堅持使用標準的'/',除非你的模式中有'/',否則你的代碼很容易被其他人閱讀。 「醫生,當我像這樣向後彎曲我的手臂時,它會感到疼痛。」 「那麼,不要那樣彎曲你的手臂!」 –
你使用'cperl-mode'(如果不是你應該的)?它不會讓我在Emacs 24上感到困惑。 –
@IvanAndrus不知道:P – tekknolagi