Sublime 文本正则表达式 tmLanguage

Sublime text regular expressions tmLanguage

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

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

你在 word= 的两端都有单词边界,这意味着 word= 之前应该有一个非单词字符(因为第一个 \b 在单词字符之前 w) 后跟一个单词字符(因为第二个 \b 在非单词字符之后)。 It matches ,word=n,例如

有关 word boundary 的更多详细信息:

There are three different positions that qualify as word boundaries:

  • Before the first character in the string, if the first character is a word character.
  • After the last character in the string, if the last character is a word character.
  • Between two characters in the string, where one is a word character and the other is not a word character.

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

因此,将 <string>(?:\b(word=)\b)</string> 替换为:

<string>\bword=</string>

this regex demo

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

作为替代方案,如果您只是不想在 `word= 前后出现非单词字符,请使用 lookarounds:

<string>(?<!\w)word=(?!\w)</string>