如果其中一个引号被转义,我试图取消突出显示字符串。
sh.nanorc
正则表达式如下:
color brightyellow ""(\\.|[^"])*""
在结束引用前面添加以下内容时,我成功地完成了结束引用[^\\]
:
color brightyellow ""(\\.|[^"])*"[^\\]"
但是,如果我对开头的符号执行相同的操作,虽然它可以完成工作,但如果开头引号未转义,它也会开始对字符串前面的任何其他符号进行着色,或者如果字符串从行首开始,则对字符串取消着色。
那么,如何用两个引号干净地完成它呢?
答案1
最好的方法是使用负数向后看。但由于 nano 使用 POSIX ERE(扩展正则表达式)正则表达式引擎,因此不可能使用单个正则表达式来完成此操作。需要解决方法,但它们并不完美。
您可以利用从上到下应用颜色变化的事实。所以,首先,使用旧的正则表达式。然后,在其下方,使用相同的正则表达式,但\\
在开始和结束引号之前使用(转义反斜杠)。为其指定默认颜色。
例如:
color brightyellow ""[^"]*""
color white "\\"[^"]*\\""