【问题标题】:Select every group of two letter-\w after string选择字符串后的每组两个字母-\w
【发布时间】:2016-12-13 09:18:35
【问题描述】:

这是示例字符串

00 00 00 12 A0 F5 CD 02 28 10

突出显示的是要匹配的组: 00 00 00 12 A0 F5 CD 02 28 10

我试过这个

(?<=12.*)\w{2}

但是好像无效。

【问题讨论】:

  • 那么,您想在12 值之后获得A0F5 等作为单独的匹配项吗?什么是正则表达式的味道? PCRE,.NET? (?&lt;=12.*) 无限宽度后视仅在 .NET 正则表达式(以及我知道的另外 3 个引擎中)中受支持。
  • 这是 Sublime Text 3 文本编辑器。这就是我在这里找到的“仅用于语法高亮的非回溯正则表达式引擎”:forum.sublimetext.com/t/whats-sublimes-new-regex-engine/18944/2>
  • 在 Sublime S&R 功能中,你可以使用(?:\G(?!\A)|\b12\b)\s*\K[A-Z0-9]+
  • @Wiktor Stribiżew 将其作为答案,以便我接受

标签: regex sublimetext3


【解决方案1】:

你可以使用

(?:\G(?!\A)|\b12\b)\s*\K[A-Z0-9]+

regex demo

详情

  • (?:\G(?!\A)|\b12\b) - 匹配上一个成功匹配的结尾 (\G(?!\A)) 或 (|) 整个单词 12 (\b12\b)
  • \s* - 0+ 个空格
  • \K - 省略目前匹配的文本
  • [A-Z0-9]+ - 1 个或多个大写字母或数字。

【讨论】:

    【解决方案2】:

    必须语言不支持可变长度查找。如果你想要12 之后的 6 个字节,那么你可以这样做:

    12 \K( ?[0-9A-F]{2}){6}
    

    例如here

    【讨论】:

      【解决方案3】:

      我不确定我是否理解,但如果您想跳过前 12 个字符,并匹配之后的每个 \w\w :

      (^.{12})((?:(?:\w\w) ?)*)
      

      第 1 组是跳过的字符。 第 2 组是您想要的信息。

      Here 就是一个例子。

      编辑:我的困惑来自 12 出现在 12 个字符之后。

      this 工作得更好吗?

      12 ?((?:(?:\w\w) ?)*)
      

      【讨论】:

        【解决方案4】:
        ^.*12\K|\G(?!^)\s*\K\w{2}
        

        你可以试试这个。忽略第一个空白匹配。查看演示。

        https://regex101.com/r/Y6VBgH/1

        【讨论】:

          【解决方案5】:

          (?&lt;!00)(?:\s)\K[A-Z0-9]{2}

          你也可以试试这个简单的。

          代码:

          <?php
          
          $string="00 00 00 12 A0 F5 CD 02 28 10";
          preg_match_all('/(?<!00)(?:\s)\K[A-Z0-9]{2}/', $string,$matches);
          print_r($matches);
          

          输出:

          Array
          (
              [0] => Array
                  (
                      [0] => A0
                      [1] => F5
                      [2] => CD
                      [3] => 02
                      [4] => 28
                      [5] => 10
                  )
          
          )
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-10-30
            • 1970-01-01
            • 1970-01-01
            • 2013-12-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多