【发布时间】:2016-06-01 11:03:19
【问题描述】:
我有一个这样的字符串:
$str ="
- group1
- group2
- group3
";
我也有这个regex:
/(\-\s\w+)\n(\-\s\w+)\n(\-\s\w+)/
如您所知,共有三个捕获组:$1、$2 和 $3。我手动创建了这些组。我的意思是如果我将它附加到上面的字符串中:
- group4
- group5
那么那个正则表达式不匹配它们。
好吧,我有一个常量模式:(\-\s\w+),我想根据字符串中匹配项的数量创建一个单独的捕获组。野兔是几个例子:
示例 1:
$str="
- group 1
";
我需要一个正则表达式来给我$1 的所有字符串。
示例 2:
$str="
- group 1
- group 2
";
我需要一个正则表达式来给我$1 的第一行字符串(- group 1)和$2 的第二行(- group 2)
好的,正如您在上面的示例中看到的,字符串是动态的,但它是根据恒定模式...现在我想知道如何根据字符串创建动态捕获组?
【问题讨论】:
-
为什么要捕获组?
preg_match_all('/- .*/', $str, $matches); -
偶尔会出现这个问题。 PHP PCRE 正则表达式中的每个捕获组都没有堆栈。如上所示使用多重匹配。总有办法解决这个限制。
-
呃,也许你正在做替换......
-
也许可以举一个替代方法的例子。