1

我正在尝试修改 a 的 xml 文件,tmLanguage并且我想添加一个关键字来匹配word=。我可以使用显然使用正则表达式来查找word,但是当我添加=它找不到的符号时word=。我试图逃脱这个角色,但没有运气。还有其他想法吗?

    <dict>
        <key>match</key>
        <string>(?:\b(word=)\b)</string>
        <key>name</key>
        <string>keyword.other.ixml</string>
    </dict>
4

1 回答 1

2

两端都有单词边界,这word=意味着word=前面应该有一个非单词字符(因为第一个\b在单词 character 之前w),然后是一个单词字符(因为第二个\b在非单词字符之后)。例如,它匹配。,word=n

有关单词边界的更多详细信息:

有资格作为单词边界的三个不同位置:

  • 在字符串的第一个字符之前,如果第一个字符是单词字符。
  • 在字符串的最后一个字符之后,如果最后一个字符是单词字符。
  • 在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。

如果您打算在所有以 开头word=情况下进行匹配,只需使用第一个并删除最后一个。w\b

所以,替换<string>(?:\b(word=)\b)</string>为:

<string>\bword=</string>

看到这个正则表达式演示

我还删除了不必要的分组(...)

作为替代方案,如果您只是不希望在 `word= 之前和之后出现非单词字符,请使用环视:

<string>(?<!\w)word=(?!\w)</string>
于 2015-11-11T17:00:47.640 回答