我有一个包含随机单词数量的字符串,我需要找到单词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('/ones+(.+?)s+twos+(.+)/i', $string, $matches);
不需要在这里使用非贪婪(懒惰)量词,否则将尽可能少地匹配(多于一个),因此只匹配r
。