Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 使用带有非贪婪秒的正则表达式_Php_Regex_Preg Match - Fatal编程技术网

Php 使用带有非贪婪秒的正则表达式

Php 使用带有非贪婪秒的正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我有一个与字符串匹配的正则表达式,并使用非贪婪语法,因此它在第一个结束匹配时停止。我需要它在第二场比赛结束时停下来。我该怎么做 $text = "start text1 end text2 end text3 end"; $regex = "~start.+?end~"; preg_match($regex, $text, $match); print_r($match); 结果: 需要结果 下面的方法应该有效,您只需再次重复所需的表达式序列。有几种方法可以做到这一点。最简单的方法是: $te

我有一个与字符串匹配的正则表达式,并使用非贪婪语法,因此它在第一个结束匹配时停止。我需要它在第二场比赛结束时停下来。我该怎么做

$text = "start text1 end text2 end text3 end";
$regex = "~start.+?end~";
preg_match($regex, $text, $match);
print_r($match);
结果:

需要结果


下面的方法应该有效,您只需再次重复所需的表达式序列。有几种方法可以做到这一点。最简单的方法是:

$text = "start text1 end text2 end text3 end";
$regex = "~start.+?end.+?end~";
preg_match($regex, $text, $match);
print_r($match);
您可能还希望使用精确的量词来描述模式:

$text = "start text1 end text2 end text3 end";
$regex = "~start(.+?end){2}~";
preg_match($regex, $text, $match);
print_r($match);

“{2}”告诉它匹配前面括号中的所有内容两次。

您可以执行
start.+?end.+?end
。。您可能还希望边界
结束
,以便
发送
修复
等不匹配。
$text = "start text1 end text2 end text3 end";
$regex = "~start.+?end.+?end~";
preg_match($regex, $text, $match);
print_r($match);
$text = "start text1 end text2 end text3 end";
$regex = "~start(.+?end){2}~";
preg_match($regex, $text, $match);
print_r($match);