我正在尝试为codemirror编辑器的批处理文件编写一个简单的语法突出显示器。但是我在突出显示命令方面陷入困境。 我只希望突出显示完整的单词。但是在某些情况下,变量名或路径的某些部分也会被突出显示。
这是突出显示的样子:
我在正则表达式中使用\b(commands)\b
,以便只匹配完整的单词。但这似乎不起作用。可能是Codemirror错误吗?
这是Codemirror模式的代码,用于仅突出显示命令
CodeMirror.defineSimpleMode("batch", {
start: [
{ //commands
regex: /\b(?:assoc|aux|break|call|cd|chcp|chdir|choice|cls|cmdextversion|color|com1|com2|com3|com4|com|con|copy|country|ctty|date|defined|del|dir|do|dpath|else|endlocal|erase|errorlevel|exist|exit|for|ftype|goto|if|in|loadfix|loadhigh|lpt|lpt1|lpt2|lpt3|lpt4|md|mkdir|move|not|nul|path|pause|popd|prn|prompt|pushd|rd|rename|ren|rmdir|setlocal|set|shift|start|time|title|type|verify|ver|vol)\b/i,
token: "builtin"
}
]
});
答案 0 :(得分:0)
我终于找到了解决方案。
按照约翰·史密斯的建议,我使用\b(commands)\b
而不是(?:\s|^)(commands)(?:\s|$)
。
这样,仅在命令之前用空格或行开头,在命令之后用空格或行结尾突出显示命令。