Emacs Lisp中如何编写原始字符串正则以实现语法高亮
Emacs自定义模式中原始字符串的语法高亮解决方案
你之前的正则规则失效,核心问题是没正确处理原始字符串内部的""转义结构,也没覆盖完整的匹配范围。试试用下面的font-lock规则:
'("r#\"\\(?:\"\"\\|[^\"]\\)*\"#" 0 font-lock-string-face)
规则说明
r#\"精准匹配原始字符串的起始标记r#"\\(?:\"\"\\|[^\"]\\)*匹配中间内容:要么是成对的双引号(对应语法里的转义双引号),要么是任意非双引号字符,*表示允许重复任意次数,这样就能完整覆盖字符串内部的所有内容,不会提前终止匹配\"#匹配原始字符串的结束标记"#
如果你的语言还支持多#的原始字符串(比如r##"..."##),可以把规则调整为:
'("r#\\+\"\\(?:\"\"\\|[^\"]\\)*\"#\\+" 0 font-lock-string-face)
内容的提问来源于stack exchange,提问作者ccQpein
相关产品推荐
相关产品推荐

