Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 3个整数的未知集合的preg_match_all_Php_Regex_Preg Match All - Fatal编程技术网

Php 3个整数的未知集合的preg_match_all

Php 3个整数的未知集合的preg_match_all,php,regex,preg-match-all,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})#', $w

我正在使用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})
之间

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

使用

'#([A-Z]{2}C)([0-9]{3}-){1,10}([0-9]{6})#'
{1,10}
指定括在括号
[0-9]{3}-
中的前面的子模式将重复1-10次

此外:

如果它可以对不确定的最大数字重复0次或更多次,请使用
*


如果可以对不确定的最大数量重复1次或多次,请使用仅针对3位数子字符串的
+
,单独/可选地捕获如下组:

模式:()


令人惊叹的。谢谢我可能需要问另一个问题,但这里是这样的:当我使用你的答案并打印出$matches[2]时,它只是打印出3个整数的最后一次迭代。我需要它打印出所有3个整数。有什么想法吗?再次感谢@猎人21188您需要稍微改变一下捕获组,试试。@chris85完美。正是我需要的。非常感谢。你可以用括号括起来,也就是说,
([0-9]{3}-{1,10})
请发布示例输入,其中显示了较大的文本体和要捕获的两个不同的子字符串(以便我们可以看到子字符串的可变性)。请根据您的输入字符串发布您想要的确切输出。否决票不是我的。我试过你的方法,效果也不错。谢谢由于另一个答案是第一个答案,因此投票认为它是正确的。给了你一票,真的!我在评论中提到的不是原始问题的一部分,而是一些附加问题。添加
?:
解决了我在评论中的单独问题。
/[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}-)?/