我正在尝试修改tmLanguage
的xml文件,我想添加一个匹配word=
的关键字。显然可以使用正则表达式来查找word
但是当我添加=
符号时,它找不到word=
。我试图逃避角色,但没有运气。还有其他想法吗?
<dict>
<key>match</key>
<string>(?:\b(word=)\b)</string>
<key>name</key>
<string>keyword.other.ixml</string>
</dict>
答案 0 :(得分:2)
j = k+1
的两端都有单词边界,这意味着word=
前面应该是非单词字符(因为第一个word=
位于单词字符{{1}之前然后是一个单词字符(因为第二个\b
位于非单词字符之后)。例如It matches ,word=n
。
有关word boundary的详细信息:
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是单词字符
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
如果您计划在启动的所有情况下w
与\b
匹配,请使用第一个word=
并删除最后一个。{/ p>
因此,请将w
替换为:
\b
我还删除了不必要的分组<string>(?:\b(word=)\b)</string>
。
作为替代方案,如果你不想在`word =之前和之后出现非单词字符,请使用lookarounds:
<string>\bword=</string>