我需要突出到王牌编辑器的伪代码的特定关键字.我发现在下面的帖子一个很好的和简单的解决方案,工作正常:
Want to highlight/change color of certain words in Ace Editor?
但不幸的是,它只适用于由ASCII字符组成的单词,而不是非ASCII扩展的unicode字符,例如像法语这样的重音字符:等等。
因此,我修改了用于解析和查找代码regex: "\\w+\\b"
中单词的正则表达式
用这个
this.$rules = {
"start": [
{
regex: "[\u{0}-\u{10FFFF}]+\\b",
token: keywordMapper
},
]
};
this.normalizeRules()
现在它工作正常,接受像'répéter'这样的关键字(repeat)or 'derrière'(向后),包含重音字符。但它不能识别以重音结尾的单词,例如'jusquà'(直到)或'modifié'(修改),当重音字母是单词的最后一个时。任何想法?非常感谢您的宝贵帮助!
洛朗
PS:与替代regex: ".+\\b"
相同的问题
1条答案
按热度按时间bxfogqkk1#
好的,找到了解决方案。用于突出显示单词的规则的正则表达式需要后跟一个**/u标志。但是规则的'regex'属性不能在其末尾包含标志。
Ace Editor在执行正则表达式之前添加/g标志(/g表示全局,以便处理与正则表达式对应的所有会议事件,而不仅仅是停止到第一个)。
如果我们需要Ace添加/u标志(命令要处理的常规表达式包括 unicode 字符),我们必须向规则添加'unicode'属性,并且该属性的值必须为true**。
然后,如果我们想选择每个由Unicode拉丁字母和数字组成的单词,我们可以使用下面的正则表达式:
(note转义字符\被加倍为'regex'属性值)
最后,它给出了这个自适应的解决方案(来自上面引用的帖子:[https://stackoverflow.com/questions/43735711/want-to-highlight-change-color-of-certain-words-in-ace-editor][1]):