小编Ola*_*avH的帖子

RegEx Challenge:捕获特定行中的所有数字

假设我们有这样的文字:

...
settingsA=9, 4.2 
settingsB=3, 1.5, 9, 2, 4, 6
settingsC=8, 3, 2.5, 1
...
Run Code Online (Sandbox Code Playgroud)

问题是如何使用单个步骤捕获特定行中的所有数字?

单步意味着:

  • 单一的正则表达式.
  • 单次操作(无循环或拆分等)
  • 所有匹配都在一个数组中捕获.

假设我想要捕获以行开头的所有数字settingsB=.最终结果应如下所示:

3
1.5
9
2
4
6
Run Code Online (Sandbox Code Playgroud)

我失败的尝试:

<?php
    $subject =
        "settingsA=9, 4.2
         settingsB=3, 1.5, 9, 2, 4, 6
         settingsC=8, 3, 2.5, 1";

    $pattern = '([\d\.]+)(, )?' // FAILED!
    $pattern = '(?:settingsB=)(?:([\d\.]+)(?:, )?)' // FAILED!
    $pattern = '(?:settingsB=)(?:([\d\.]+)(?:, )?)+' // FAILED!
    $pattern = '(?<=^settingsB=|, )([\d+\.]+)' // FAILED!

    preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
    if ($matches) {
        print_r($matches);
    }
?>
Run Code Online (Sandbox Code Playgroud)

更新1: …

php regex text pcre notepad++

6
推荐指数
1
解决办法
96
查看次数

标签 统计

notepad++ ×1

pcre ×1

php ×1

regex ×1

text ×1