我正试图从这个字符串中获取“内容”:
$string = "start start content end";
使用这样的preg_match:
preg_match('/start(.*?)end/', $string, $matches);
echo $match[1];
但问题是$matches[1]
不仅start content
返回content
,因为start
中有两个$string
(可能更多)
如何仅使用content
获取preg_match
部分?
答案 0 :(得分:3)
使用否定前瞻:
$string = "start start content end";
preg_match('/start\h*((?:(?!start).)*)end/', $string, $matches);
echo $matches[1];
// content
(?:(?!start).)
会匹配任何字符,如果start
后面没有。
答案 1 :(得分:0)
您可以添加+
来吃掉所有start
,然后捕获所需的字符串。
(?:start\s)+(.+?)end