Sublime文本正则表达式tmLanguage

时间:2015-11-11 16:33:06

标签: regex sublimetext2 tmlanguage

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

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

1 个答案:

答案 0 :(得分:2)

j = k+1的两端都有单词边界,这意味着word=前面应该是非单词字符(因为第一个word=位于单词字符{{1}之前然后是一个单词字符(因为第二个\b位于非单词字符之后)。例如It matches ,word=n

有关word boundary的详细信息:

  

有三种不同的职位符合词边界:   

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

如果您计划在启动的所有情况下w\b匹配,请使用第一个word=并删除最后一个。{/ p>

因此,请将w替换为:

\b

请参阅this regex demo

我还删除了不必要的分组<string>(?:\b(word=)\b)</string>

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

<string>\bword=</string>