无法匹配正则表达式

Not able to match regex

我有一个像 "5-2,5-12,15-27,5-22,50-3,5-100"

这样的字符串

我需要一个正则表达式来匹配所有出现的情况,如下所示:-

5-2
5-12
5-22
5-100

匹配所有这些的正确正则表达式是什么。

使用以下正则表达式:

(?<!\d)5-\d{1,}

DEMO

不太了解您的需求,但是,怎么样:

$str = "5-2,5-12,15-27,5-22,50-3,5-100";
preg_match_all('/\b5-\d+/', $str, $matches);
print_r($matches)

preg_match_all('/\b\d-\d+/', $str, $matches);

输出:

Array
(
    [0] => Array
        (
            [0] => 5-2
            [1] => 5-12
            [2] => 5-22
            [3] => 5-100
        )

)

怎么样:

Online Demo

/(?<!\d)\d\-\d{1,3}/g

如果理解正确,模式的第一部分是一个数字 \d 因此我们需要排除其他数字,后跟 (?<!\d) 后跟 - 最后似乎是是一个最多 3 位数的数字,如果你需要更多,你可以删除 3,它也可以工作,所以它是 \d{1,3}\d{1,}