1

在我的语言中,关键字是文字#list-empty?,所以我想与之匹配。我正在使用 gtksourceview 提供语法高亮,并使用以下定义

<keyword>list-empty?</keyword>

但是,这匹配list-emptand list-empty(但不匹配文字list-empty?)。对我来说,这表明 gktsourceview 将其中的内容<keyword>视为正则表达式。所以我想逃避?并从字面上匹配它。然而,类似的东西:<keyword>list-empty\?<keyword>根本不起作用。

https://github.com/espringe/wisp/blob/bf1aed13/resources/wisp.lang#L67

那么我如何逃避?并与之匹配

4

2 回答 2

4

将此添加到您的keyword上下文中:

<suffix>(?!\w)</suffix>

...然后继续逃避问号:

<keyword>list-empty\?</keyword>

默认后缀是\b, 假设每个关键字都以单词字符结尾。你的大多数人都这样做,并且(?!\w)就像\b在那些情况下一样,但它也在问号之后匹配,同时仍然不允许下一个字符是单词字符。

于 2012-10-21T10:43:45.980 回答
0

?匹配它之前的单个字符

/list-empty?/将匹配 list-empt 和 list-empty。

您可能希望使用前瞻:

<keyword>(?=list\-empty).+匹配具有 <keyword> 后跟 list-empty 的行。

于 2012-10-17T03:43:30.680 回答