首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Emacs对qr"\.[^.]+$“的语法突出显示?

如何修复Emacs对qr"\.[^.]+$“的语法突出显示?
EN

Stack Overflow用户
提问于 2011-11-27 08:09:12
回答 2查看 242关注 0票数 0

Emacs在像这样的行后是令人困惑的语法

代码语言:javascript
复制
fileparse($file, qr"\.[^.]+$");

并认为文件的其余部分是一个字符串。我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-27 08:21:47

Emacs被qr表达式中的引号搞糊涂了。标准正则表达式分隔符(/)起作用:

代码语言:javascript
复制
fileparse($file, qr/\.[^.]+$/);

事实上,几乎所有其他的东西似乎都可以工作。

代码语言:javascript
复制
fileparse($file, qr{(\.[^.]+$/});
fileparse($file, qr*\.[^.]+$*);
fileparse($file, qr#\.[^.]+$#);

我的VIM版本不会被引号搞糊涂,但我知道旧版本的VIM会弄糊涂。加引号真的很令人困惑,因为它使qr表达式看起来像一个字符串(事实并非如此)。在正则表达式中使用引号作为分隔符通常是不好的策略,即使这在技术上是合法的。

然而,真正重要的问题是什么是fileparse?这不是标准的Perl函数。我假设这是从File::Basename导入的?这是正确的吗?

根据我的文档,fileparse中的第二个参数应该是一个数组,而不是一个带引号的正则表达式。

票数 3
EN

Stack Overflow用户

发布于 2011-11-27 12:23:53

大卫·W可能有正确的答案。同样,最好避免使用"作为分隔符,但有时需要使用'作为分隔符,以防止内插,因此这可能对这种情况下的某些人很有用。

因此,如果出于某种原因,您确实需要引号分隔符(或者为了防止使用'进行插值),您总是可以这样做:

代码语言:javascript
复制
fileparse($file, qr"\.[^.]+$"); #"# highlight fix

一个例子使用了一个这样做很糟糕的例子:

代码语言:javascript
复制
s'hi'by'; #'# highlight fix

注意:第二个#用于触发编辑器中的注释突出显示,以便highlight fix显示为注释。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8282628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档