如何在 .nanorc 文件中使用正则表达式捕获组?

How to use regex capture group inside a .nanorc file?

如何将 .nanorc 文件中的正则表达式捕获组与 color 选项结合使用?

Nanorc docs描述了一个颜色选项,用于创建语法高亮显示。

color fgcolor,bgcolor 正则表达式

对于当前定义的语法,显示所有与扩展正则表达式regex匹配的前景色fgcolor和背景色bgcolor的表达式,至少必须指定其中之一...

使用以下正则表达式,如果可以使用捕获组,允许我修复 nano.bashrc 语法高亮文件中的一个烦人的错误,该错误错误地高亮注释如下:

新的(有效的)正则表达式是这样的:

{[^}]*}|\[[^\]]*\]|(#.*$)

它匹配大括号之间(包括)的所有内容,或方括号之间(包括)的所有内容,最后是 # 符号后跟任何字符任意次数,直到结束线。仍在研究如何不匹配前面有美元符号的#。

您可以在此处查看它的工作演示:https://regexr.com/3tdqf

我希望能够仅突出显示实际评论,方法是使用第一个捕获组作为颜色突出显示的过滤器!

可能吗?

编辑:我注意到可以根据文档提供用于颜色突出显示的开始模式和结束模式:

color fgcolor,bgcolor start="sr" end="er"

显示以扩展正则表达式sr开头,以扩展正则表达式er结尾的表达式,前景色为fgcolor,背景色为bgcolor,必须至少指定其中之一。这允许语法突出显示跨越多行。请注意,在找到初始 sr 之后,所有后续的 sr 实例都将突出显示,直到第一个 er.

也许这可以帮助解决我们的困境:S

我遇到这个问题是因为我在寻找如何使用 Nano 来突出显示 C 中的函数。正如上面评论中提到的,Nano 使用 POSIX 扩展正则表达式 (ERE),而 ERE 没有先行或向后看。解决方法依赖于 nanorc 颜色语法规则从上到下按顺序应用的事实。我们创建规则来捕获整个组,然后再向下;我们创建规则来更改我们不想要的字符的颜色。

## Comment
color green "#[#a-zA-Z0-9[:blank:]]*"
## Quoted text
color yellow "\"[^\"]*\""
## Allow commenting out a line of code
color green "^[[:blank:]]*#.*$"
## Braces
color blue "\{.*\}"
## Brackets
color blue "\[.*\]"

上面的代码与@GrayedFox here and @UnbearableLightness here.

给出的例子相匹配