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

如何在.nanorc文件中使用regex捕获组? 如何将.nanorc文件中的正则表达式捕获组与color选项结合使用?,regex,bash,syntax-highlighting,nano,Regex,Bash,Syntax Highlighting,Nano,描述颜色选项,用于创建语法高亮显示 color fgcolor、bgcolor regex 对于当前定义的语法,显示所有与扩展正则表达式正则表达式正则表达式正则表达式正则表达式匹配的前景色fgcolor和背景色bgcolor,必须至少指定其中一个 如果可以使用capture组,使用以下正则表达式将允许我修复nano.bashrc语法突出显示文件中的一个恼人错误,该文件错误地突出显示注释,如下所示: 新的(工作)正则表达式如下所示: {[^}]*}|\[[^\]]*\]|(#.*$) 它匹配大

描述颜色选项,用于创建语法高亮显示

color fgcolor、bgcolor regex

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

如果可以使用capture组,使用以下正则表达式将允许我修复nano.bashrc语法突出显示文件中的一个恼人错误,该文件错误地突出显示注释,如下所示:

新的(工作)正则表达式如下所示:

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

您可以在此处看到它的工作演示:

我希望能够通过使用第一个捕获组作为颜色高亮显示的过滤器,只高亮显示实际的评论

可能吗

编辑:我注意到,根据文档,可以为颜色高亮显示提供开始模式和结束模式:

color fgcolor,bgcolor start=“sr”end=“er”

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


也许这有助于解决我们的困境:我遇到这个问题是因为我正在研究如何使用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和@UnderrableLightness给出的示例相匹配。

试试
{[^}]*}\[.*]\\\\\\\\\(?。这很好,但在bash中不提供消极的“向前看/向后看”功能-just-ERE(不是PCRE).但是我很欣赏你的输入!我想我需要弄清楚的是,如果上面的正则表达式不是代码块、变量等的一部分,那么如何使它只与
#
符号和它之后的所有标记匹配,直到行尾,所以“只有当#不在大括号内、括号内或前面有一个美元符号时,匹配#和后续字符直到句子结束。”更新的正则表达式也捕捉到曲线括号内的
尝试
{[^}]*}\[^\]\([^\]*\)。(?:\s\^^^^^)($)
。有点尴尬……我一直试图修复的bug不是一个bug。从屏幕截图上看——这是一个格式错误的bash(测试条件应该像
[!-z someThing]&&&[otherCondition]
——修复提供了正确的代码高亮显示。不过,知道这是否可行还是很酷的