根据UltraEdit的语法突出显示,Perl正则表达式看起来不正确

时间:2015-04-06 21:06:44

标签: regex perl ultraedit

之前的帖子与我想要尝试的内容相近:Multiple Substitutions

以下是我要做的替换:

$description =~ s/\"/\\"/g;
$description =~ s/\n/<br>/g;

当我使用CGI查看我的UltraEdit脚本时,它看起来不正确。如果我注释掉第一行($description =~ s/\"/\\"/g;),所有代码看起来都不错。

我不知道错误是什么?

2 个答案:

答案 0 :(得分:2)

使用字符串 Perl 在UltraEdit主窗口底部状态栏中显示的活动文件为Perl语法高亮文件,在主菜单中打开UltraEdit 高级 - 配置 - 编辑器显示 - 语法突出显示

已经在已安装的wordfiles 列表中选择了

Perl (或旧版UltraEdit中的语言)。单击按钮打开将打开包含 Perl 的语法突出显示定义的wordfile。应使用取消关闭配置对话框。

使用UltraEdit v22.0安装的 Perl 的语法高亮显示为第一行:

/L5"Perl" PERL_LANG EnableMLS Line Comment = # Line Comment Preceding Chars = [~[^]^^$/\(] Block Comment On = =pod Block Comment Off = =cut Block Comment On Alt = =item Block Comment Off Alt = =cut Escape Char = \ File Extensions = CGI PL PM PLX

此语法突出显示问题的重点是:

  1. <强> EnableMLS
    它可以实现多行字符串突出显示,就像在Perl中一样,字符串可以跨越多行。

  2. 逃脱字符= \
    它定义了字符串中双引号和单引号的转义字符。

  3. 字符串字符=&#34;&#39;
    不存在此处导致使用内部默认值来标记字符串的开头和结尾,这是双引号和单引号。

  4. UltraEdit没有真正的Perl语言intellisense用于语法高亮。因此,它不知道示例块的第一行上的双引号是在Perl正则表达式中,因此应该完全忽略字符串突出显示。

    正则表达式中的第一个双引号被忽略为使用反斜杠进行转义。但是第二个双引号没有被转义,因此UltraEdit的语法突出显示引擎将其解释为字符串的开头,并突出显示下一个未转义的双引号作为字符串。

    第二个双引号也可以通过反弹进行转义,以使UltraEdit中的语法突出显示正确,即

    $description =~ s/\"/\\\"/g;
    

    第一个和第二个双引号是否必须用于Perl解释器在此正则表达式中转义。但是,这样做有助于在UltraEdit和大多数其他文本编辑器中突出显示此行正确。

    可以关闭Perl的wordfile,因为关于此语法突出显示问题,无法在wordfile中执行任何操作。

    我同意Lucas Trzesniewski撰写的评论:只有perl才能解析Perl。

    顺便说一下:通过在单独的一行中向一个颜色组添加单引号或双引号,就可以突出显示颜色与双引号字符串不同的单引号字符串。例如附加

    /C9"Single Quoted Strings"
    '
    
    当使用支持最多20个颜色组的UltraEdit&gt; = v17.00时,

    会突出显示为颜色组9定义颜色和字体样式的单引号字符串,而双引号字符串仍然用字符串定义的颜色和字体样式突出显示。 UltraEdit&lt; v17.00以及UEStudio&lt; v11.00仅支持最多8个颜色组。有关语法高亮定义的更多信息,请参阅UltraEdit论坛页面template for syntax highlighting language wordfile

答案 1 :(得分:1)

我没有UltraEdit,但我有时遇到与Emacs perl-mode相同的情况。解决方案通常是添加带有结束引号字符的注释,即:

$description =~ s/\"/\\"/g;  # " Satisfy the angry syntax highlighting gremlins
$description =~ s/\n/<br>/g;

您的里程可能会有所不同。