我正在使用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})
之间。
任何帮助将不胜感激!谢谢!
答案 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}-)?/