在某些单词之间和之后找到随机文本
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
.
我有一个包含随机数量单词的字符串,我需要找到单词 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
.