2017-09-08 10 views
0

コメント内にアスタリスクで囲まれた何かをキャプチャするための正規表現は何ですか?私はこのようなコメントを定義し、既存の言語定義を変更しようとしている

<dict> 
     <key>match</key> 
     <string>(#) .*$\n?</string> 
     <key>name</key> 
     <string>comment.line.number-sign.myLanguage</string> 
     <key>captures</key> 
     <dict> 
      <key>1</key> 
      <dict> 
       <key>name</key> 
       <string>punctuation.definition.comment.myLanguage</string> 
      </dict> 
     </dict> 
    </dict> 

これは#で始まる行はコメントとして識別し、それに応じて強調表示されることを保証します。私がしたいことは、アスタリスクでコメントされた単語を囲み、他のもの、例えばkeywordとして表示させることです。行が#に起動しない場合

<dict> 
     <key>match</key> 
     <string>\*([^*]+)\*</string> 
     <key>captures</key> 
     <dict> 
      <key>1</key> 
      <dict> 
       <key>name</key> 
       <string>keyword.myLanguage</string> 
      </dict> 
     </dict> 
    </dict> 

はしかし、それは動作しませんので、私は両方のルールの間に矛盾があると仮定しています。しかし、単純に、これは動作しません追加。だから、私は、のようなものを*に囲まれていないコメントにすべてのものを識別し、正規表現を使用することによって、それを回避することができると思った:

# This is a comment *this is something else* this is still a comment *not* yes 

任意のアイデア?

答えて

0

[OK]を、私はそれが動作するようになった:

<dict> 
    <key>begin</key> 
    <string>(#) .*</string> 
    <key>name</key> 
    <string>comment.line.number-sign.myLanguage</string> 
    <key>captures</key> 
    <dict> 
     <key>1</key> 
     <dict> 
      <key>name</key> 
      <string>punctuation.definition.comment.myLanguage</string> 
     </dict> 
     <key>0</key> 
     <dict> 
      <key>patterns</key> 
      <array> 
      <dict> 
       <key>name</key> 
       <string>keyword.myLanguage</string> 
       <key>match</key> 
       <string>\*[^*]+\*</string> 
      </dict> 
      </array> 
     </dict> 
    </dict> 
    <key>end</key> 
    <string>$\n?</string> 
+0

あなた自身の答えを受け入れることができます。 :) https://stackoverflow.blog/2009/01/06/accept-your-own-answers/ – Gama11

関連する問題