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>
我还删除了不必要的分组 (...)
。
作为替代方案,如果您只是不想在 `word= 前后出现非单词字符,请使用 lookarounds:
<string>(?<!\w)word=(?!\w)</string>
我正在尝试为 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>
我还删除了不必要的分组 (...)
。
作为替代方案,如果您只是不想在 `word= 前后出现非单词字符,请使用 lookarounds:
<string>(?<!\w)word=(?!\w)</string>