如果引号被转义,则纳米取消突出显示字符串

如果引号被转义,则纳米取消突出显示字符串

如果其中一个引号被转义,我试图取消突出显示字符串。

sh.nanorc正则表达式如下:
color brightyellow ""(\\.|[^"])*""

在结束引用前面添加以下内容时,我成功地完成了结束引用[^\\]
color brightyellow ""(\\.|[^"])*"[^\\]"

但是,如果我对开头的符号执行相同的操作,虽然它可以完成工作,但如果开头引号未转义,它也会开始对字符串前面的任何其他符号进行着色,或者如果字符串从行首开始,则对字符串取消着色。

那么,如何用两个引号干净地完成它呢?

答案1

最好的方法是使用负数向后看。但由于 nano 使用 POSIX ERE(扩展正则表达式)正则表达式引擎,因此不可能使用单个正则表达式来完成此操作。需要解决方法,但它们并不完美。

您可以利用从上到下应用颜色变化的事实。所以,首先,使用旧的正则表达式。然后,在其下方,使用相同的正则表达式,但\\在开始和结束引号之前使用(转义反斜杠)。为其指定默认颜色。

例如:

color brightyellow ""[^"]*""
color white "\\"[^"]*\\""

相关内容