preg_match_all表示3个整数的未知集合

时间:2017-07-13 23:18:14

标签: php regex preg-match-all

我正在使用preg_match_all,但我有一个问题我不确定是否可以使用此方法解决。以下行是我正在检索的内容:

XXC033-101-143-147-175-142115 -

我想要参考的数字集(033-101-143等)。但是,集合的数量(总是包含三个整数)是未知的,可以在1到10之间。如果我知道总会有2集,我会有以下内容:

if (preg_match_all('#([A-Z]{2}C)([0-9]{3})-([0-9]{3})-([0-9]{6})#', $wwalist, $matches))

...rest of code...

当我无法知道可能的3个整数组的数量时,有没有这样做。它们始终位于#([A-Z]{2}C)-([0-9]{6})之间。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:3)

使用

'#([A-Z]{2}C)([0-9]{3}-){1,10}([0-9]{6})#'

{1,10}指定括号[0-9]{3}-中的前一个子模式将重复1-10次。

另外:

如果无限期最大数量可以重复0次或更多次,请使用*

如果无限期最大数量可以重复1次或更多次,请使用+

答案 1 :(得分:0)

仅定位3位数的子字符串,单独/可选地捕获这样的组:

模式:(Demo

/[A-Z]{2}C\K(\d{3}-)(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?/