代码之家  ›  专栏  ›  技术社区  ›  nachocab

在注释中捕获由星号包围的内容的正则表达式是什么?

  •  0
  • nachocab  · 技术社区  · 7 年前

        <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
    

    有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   nachocab    7 年前

    好的,我成功了:

    <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>