【发布时间】:2018-03-20 19:39:39
【问题描述】:
我正在尝试为 Perl 脚本创建自己的语言定义主题,以便按照我想要的方式对所有内容进行颜色编码。
我遇到的问题是,通过在 UDL GUI 中使用分隔符,正则表达式部分没有按照我需要的方式着色。 示例:
if($string =~ /^This is a string$/){
print "worked!!!!!!\n";
}
我希望“/^This is a string$/”颜色编码为红色,但我创建的分隔符在 =~ / 之后占用整行。如何强制 Notepad++ 仅在最后一行“/”之前进行颜色编码?
这是我的分隔符配置。请记住,我已经尝试过“/”而不是 ((EOL)),但它没有用。谢谢
【问题讨论】:
-
从技术上讲,
/是打开和关闭分隔符。不幸的是,它也是除法运算符,这使得这变得复杂。如果您习惯使用m/.../而不是/.../,则可以将m/设置为开始分隔符,将/设置为结束分隔符。不过,这对s///没有帮助。 -
十年前我使用 Notepad++ 有一段时间了,我似乎记得荧光笔与 Perl 配合得很好。然后我切换到 PSPad,它也是免费的,但我发现它好多了,还有突出显示。
-
你会遇到一些麻烦让这个工作。 @ikegami 关于
m//和s///是正确的,但是m{}{}和s[][]和y!!!和tr@@@都是有效的(但y///和tr///不是正则表达式,只是其他引用- 类似的运算符)。m mfooom也有效。有一种说法是只有 Perl 可以解析 Perl,我认为您使用 Notepad++ 获得的解析引擎不足以应对这一挑战。如果您想了解有关解析 Perl 的更多信息,请参阅 TPCiA 2017 中的this talk by Damian Conway 关于编写单个正则表达式来解析它是很好的 -
看完 Damian 的演讲后,也可以观看同一会议的 these two follow-up lightning talks。他们很搞笑。 :)
-
我很抱歉,但 PSPad 可能是我见过的最丑的编辑器之一 :(。我喜欢它的一些工具,而且 Perl 的语法高亮太简单了。我想我将继续使用我在记事本中的内容。谢谢你们