在特定单词之间和之后随机查找文本


Find random texts in between and after certain words

我有一个包含随机单词数量的字符串,我需要找到单词1和2之间以及单词2之后的随机文本。我设法在单词1和2之间找到了随机文本,但在单词2之后,我只得到了随机文本的一个字符。请看看我的代码,让我知道我做错了什么。

$string = 'one randomText two randomText';
preg_match_all('/one''s+(.+?)''s+two''s+(.+?)/i', $string, $matches);
print_r($matches);

预期输出:

Array ( [0] => Array ( [0] => one randomText two randomText ) [1] => Array ( [0] => randomText ) [2] => Array ( [0] => randomText ) );
实际输出:

Array ( [0] => Array ( [0] => one randomText two r ) [1] => Array ( [0] => randomText ) [2] => Array ( [0] => r ) );

您可以使用:

preg_match_all('/one's+(.+?)'s+two's+(.+)/i', $string, $matches);

不需要在这里使用非贪婪(懒惰)量词,否则将尽可能少地匹配(多于一个),因此只匹配r