Php 使用量词匹配子模式的preg_*函数

Php 使用量词匹配子模式的preg_*函数,php,regex,Php,Regex,我有一个这样的正则表达式: /(?:^- (.*)$\r*\n*)+/m 目的是匹配以-[space]开头的一行或多行文本 除了收集匹配的子模式(.*)之外,这一切都很好。只返回最后一个,所有以前的子模式匹配(作为索引0的一部分出现在结果数组中)都将丢失 我真的需要一些方法来获取数组中的这些子模式,这样我就可以将它们传递给内爆,并对它们执行我正在尝试的操作 我是不是遗漏了一些明显的东西?也许你可以 preg_match_all('/^- (.*)\r\n/m', $subject, $resu

我有一个这样的正则表达式:

/(?:^- (.*)$\r*\n*)+/m
目的是匹配以
-[space]
开头的一行或多行文本

除了收集匹配的子模式
(.*)
之外,这一切都很好。只返回最后一个,所有以前的子模式匹配(作为索引0的一部分出现在结果数组中)都将丢失

我真的需要一些方法来获取数组中的这些子模式,这样我就可以将它们传递给
内爆
,并对它们执行我正在尝试的操作

我是不是遗漏了一些明显的东西?

也许你可以

preg_match_all('/^- (.*)\r\n/m', $subject, $result, PREG_PATTERN_ORDER);
var_dump($result);
例如:

<?php
$subject = "- some line
- some content
- some other content
nothing to match over here
- more things here
- more patterns
nothing to match here
";

preg_match_all('/^- (.*)\r\n/m', $subject, $result, PREG_PATTERN_ORDER);
var_dump($result);
?>

你能给我们看一些输入字符串的例子吗?这似乎是一个很好的开始,但是我怎样才能在这上面进行
preg\u replace
?我不确定我是否理解。要从初始的
$subject
var构建正则表达式模式,我将执行
$someVar='/'。内爆('|',$result[1])。'/'然后使用
$someOtherVar=preg\u replace($someVar,$someReplacement,$textVar)(我稍微编辑了一下正则表达式,省去了
\r\n
)。如果我误解了,我道歉。
array(2) {
  [0]=>
  array(5) {
    [0]=>
    string(12) "- some line
"
    [1]=>
    string(15) "- some content
"
    [2]=>
    string(21) "- some other content
"
    [3]=>
    string(19) "- more things here
"
    [4]=>
    string(16) "- more patterns
"
  }
  [1]=>
  array(5) {
    [0]=>
    string(9) "some line"
    [1]=>
    string(12) "some content"
    [2]=>
    string(18) "some other content"
    [3]=>
    string(16) "more things here"
    [4]=>
    string(13) "more patterns"
  }
}