【问题标题】:What's the regular expression for capturing something surrounded by asterisks inside a comment?捕获评论中被星号包围的内容的正则表达式是什么?
【发布时间】:2018-02-17 18:33:42
【问题描述】:

我正在尝试修改定义 cmet 的现有语言定义,如下所示:

    <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

有什么想法吗?

【问题讨论】:

    标签: regex sublimetext2 sublimetext tmlanguage


    【解决方案1】:

    好的,我开始工作了:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多