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

时间:2018-08-03 10:16:01

标签: regex bash syntax-highlighting nano

如何与[HttpGet] [Route("parseenum")] public ActionResult CheckEnum([FromQuery] MyEnum someEnum) ... [HttpGet] [Route("parseenum")] public ActionResult CheckEnum2([FromQuery] MyEnum someEnum) ... 选项结合使用.nanorc文件中的正则表达式捕获组?

Nanorc docs描述了一种颜色选项,用于创建语法突出显示。

颜色fgcolor,bgcolor正则表达式

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

如果可以使用捕获组,使用以下正则表达式将使我能够修复nano.bashrc语法突出显示文件中的一个令人讨厌的错误,该错误错误地突出显示了以下注释:

enter image description here

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

color

它匹配花括号(包括括号)之间的所有内容,或方括号(包括括号)之间的所有内容,最后匹配{[^}]*}|\[[^\]]*\]|(#.*$) 符号,后跟任意字符任意数量的时间,直到行尾为止。仍在研究如何在#前面加一个美元符号的情况下不匹配。

您可以在此处查看其工作示例:https://regexr.com/3tdqf

通过使用第一个捕获组作为颜色突出显示的过滤器,我只希望突出显示实际的注释!

有可能吗?

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

颜色fgcolor,bgcolor start =“ sr” end =“ er”

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

也许这可以帮助解决我们的难题:S

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,因为我一直在寻找如何使用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和@UnbearableLightness here给出的示例匹配。