根据 UltraEdit 的语法突出显示,Perl 正则表达式看起来不正确
Perl regular expression looks incorrect according to syntax highlighting of UltraEdit
之前的 post 看起来很接近我想尝试的:Multiple Substitutions
以下是我要进行的替换:
$description =~ s/\"/\"/g;
$description =~ s/\n/<br>/g;
当我使用 UltraEdit
查看我的 CGI
脚本时,它看起来不正确。如果我注释掉第一行 ($description =~ s/\"/\"/g;)
所有代码看起来都不错。
我不明白错误是什么?
我没有UltraEdit,但我有时会遇到与Emacs perl-mode 相同的情况。解决方案通常是添加一个带有结束引号字符的注释,即:
$description =~ s/\"/\"/g; # " Satisfy the angry syntax highlighting gremlins
$description =~ s/\n/<br>/g;
您的里程可能会有所不同。
活动文件是 Perl 语法突出显示的文件,如 UltraEdit 主 window 底部状态栏中的字符串 Perl 所示,从主菜单在 UltraEdit 中打开高级-配置-编辑器显示-语法高亮.
Perl 已在 已安装的 wordfiles 列表中选择(或在旧版本中选择 Language UltraEdit 的)。单击按钮 Open 打开包含 Perl 语法高亮定义的 word 文件。应使用 Cancel.
关闭配置对话框
随 UltraEdit v22.0 安装的 Perl 的语法高亮 wordfile 的第一行是:
/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
关于此语法高亮问题的重要事项是:
启用MLS
启用多行字符串突出显示,因为在 Perl 中一个字符串可以跨越多行。
转义字符=\
它定义了字符串中双引号和单引号的转义字符。
字符串字符数 = "'
此处不存在导致使用内部默认字符标记字符串的开始和结束,这是一个双引号和一个单引号。
UltraEdit 没有用于语法高亮显示的真正 Perl 语言智能感知。因此它不知道示例块第一行的双引号在 Perl 正则表达式中,因此应该完全忽略以突出显示字符串。
正则表达式中的第一个双引号被忽略,因为用反斜杠转义了。但是第二个双引号没有转义,因此 UltraEdit 的语法高亮引擎将其解释为字符串的开头,并突出显示下一个未转义双引号之前的所有内容作为字符串。
第二个双引号也可以用反斜杠转义,以便在 UltraEdit 中正确突出显示语法,即
$description =~ s/\"/\\"/g;
第一个或第二个双引号是否必须用于此正则表达式中转义的 Perl 解释器。但是这样做仍然有助于在 UltraEdit 和大多数其他文本编辑器中正确突出显示此行。
Perl 的 wordfile 可以关闭,因为在 wordfile 中无法对这个语法突出显示问题进行任何操作。
我同意Lucas Trzesniewski的评论:只有perl可以解析Perl。
顺便说一句:通过在单独的行上向颜色组添加单引号或双引号,可以使用与双引号字符串不同的颜色突出显示单引号字符串。例如追加
/C9"Single Quoted Strings"
'
当使用支持多达 20 个颜色组的 UltraEdit >= v17.00 时,结果使用为颜色组 9 定义的颜色和字体样式突出显示单引号字符串,而双引号字符串仍然使用为字符串定义的颜色和字体样式突出显示. UltraEdit < v17.00 以及 UEStudio < v11.00 仅支持最多 8 个颜色组。有关语法高亮定义的更多信息,请参阅 UltraEdit 论坛页面 template for syntax highlighting language wordfile。
之前的 post 看起来很接近我想尝试的:Multiple Substitutions
以下是我要进行的替换:
$description =~ s/\"/\"/g;
$description =~ s/\n/<br>/g;
当我使用 UltraEdit
查看我的 CGI
脚本时,它看起来不正确。如果我注释掉第一行 ($description =~ s/\"/\"/g;)
所有代码看起来都不错。
我不明白错误是什么?
我没有UltraEdit,但我有时会遇到与Emacs perl-mode 相同的情况。解决方案通常是添加一个带有结束引号字符的注释,即:
$description =~ s/\"/\"/g; # " Satisfy the angry syntax highlighting gremlins
$description =~ s/\n/<br>/g;
您的里程可能会有所不同。
活动文件是 Perl 语法突出显示的文件,如 UltraEdit 主 window 底部状态栏中的字符串 Perl 所示,从主菜单在 UltraEdit 中打开高级-配置-编辑器显示-语法高亮.
Perl 已在 已安装的 wordfiles 列表中选择(或在旧版本中选择 Language UltraEdit 的)。单击按钮 Open 打开包含 Perl 语法高亮定义的 word 文件。应使用 Cancel.
关闭配置对话框随 UltraEdit v22.0 安装的 Perl 的语法高亮 wordfile 的第一行是:
/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
关于此语法高亮问题的重要事项是:
启用MLS
启用多行字符串突出显示,因为在 Perl 中一个字符串可以跨越多行。转义字符=\
它定义了字符串中双引号和单引号的转义字符。字符串字符数 = "'
此处不存在导致使用内部默认字符标记字符串的开始和结束,这是一个双引号和一个单引号。
UltraEdit 没有用于语法高亮显示的真正 Perl 语言智能感知。因此它不知道示例块第一行的双引号在 Perl 正则表达式中,因此应该完全忽略以突出显示字符串。
正则表达式中的第一个双引号被忽略,因为用反斜杠转义了。但是第二个双引号没有转义,因此 UltraEdit 的语法高亮引擎将其解释为字符串的开头,并突出显示下一个未转义双引号之前的所有内容作为字符串。
第二个双引号也可以用反斜杠转义,以便在 UltraEdit 中正确突出显示语法,即
$description =~ s/\"/\\"/g;
第一个或第二个双引号是否必须用于此正则表达式中转义的 Perl 解释器。但是这样做仍然有助于在 UltraEdit 和大多数其他文本编辑器中正确突出显示此行。
Perl 的 wordfile 可以关闭,因为在 wordfile 中无法对这个语法突出显示问题进行任何操作。
我同意Lucas Trzesniewski的评论:只有perl可以解析Perl。
顺便说一句:通过在单独的行上向颜色组添加单引号或双引号,可以使用与双引号字符串不同的颜色突出显示单引号字符串。例如追加
/C9"Single Quoted Strings"
'
当使用支持多达 20 个颜色组的 UltraEdit >= v17.00 时,结果使用为颜色组 9 定义的颜色和字体样式突出显示单引号字符串,而双引号字符串仍然使用为字符串定义的颜色和字体样式突出显示. UltraEdit < v17.00 以及 UEStudio < v11.00 仅支持最多 8 个颜色组。有关语法高亮定义的更多信息,请参阅 UltraEdit 论坛页面 template for syntax highlighting language wordfile。