1

の 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=(最初の文字は単語の文字の前にあるため)、単語の文字が後に続く必要があります (2 番目の文字は単語以外の文字の後にあるため)。たとえば、に一致します。\bw\b,word=n

単語境界の詳細:

単語境界とみなされる位置は 3 つあります。

  • 文字列の最初の文字の前 (最初の文字が単語文字の場合)。
  • 最後の文字が単語文字の場合、文字列の最後の文字の後。
  • 文字列内の 2 つの文字の間。1 つは単語の文字で、もう 1 つは単語の文字ではありません。

始まるword=すべてのケースで一致させる場合は、最初のものを使用して最後のものを削除してください。w\b

したがって、次のように置き換え<string>(?:\b(word=)\b)</string>ます。

<string>\bword=</string>

この正規表現のデモを見る

また、不要なグループ化も削除しました(...)

別の方法として、単語以外の文字を `word= の前後に表示したくない場合は、ルックアラウンドを使用します。

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