文本窗口的语法高亮存在误报错

BUG反馈 · 41 次浏览
白云朔 创建于 11天11小时前

语法高亮需要使用正则表达式来匹配高亮的对象,但是检查语法高亮的语法(应该是html?)是否正确的判定存在误杀。

符号“<”后无法使用正则表达式的大部分符号,如<=、<.、<\、<[都会报错:

“加载高亮语法规则失败,名称不能以“=”字符(十六进制 0x3D)开头。”

这个报错应该是来自于语法高亮的语法检测的?对于<>中的第一个字符不能是这些字符。但是这会导致语法高亮中使用的正则表达式也被报错,如:

(?<=[0-9])[0-9]

[0-9]\<[0-9]

\<.+\>

\<\\\>

都会被报错。

目测这里应该是使用了正则表达式来判定:\<(\=|\.|\\|\[)

如果没有其他的方案,能不能改成\<(\=|\.|\\|\[)(?=.*\>$)呢?这样只有在行尾有>的时候才报错,而对于正则表达式来说,行尾有>的情况较少,即便有,也能在>后添加$或\n之类的来避免被报错。


回复内容
CL 11天11小时前
#1

首先确保给定的语法高亮定义内容是合法的XML文本。

回复主贴