我正在尝试匹配输入字符串中的前4个单词。
我的模式:([\w\’\s{3}])+
我的内容:test1 test2 test3 test4 test5 test6 test7
我想得到:test1 test2 test3 test4
所有字母字符,最多有3个空格。
答案 0 :(得分:2)
虽然您可以只使用explode(" ", $s)
,然后将前4个元素和imlode
取回,但固定的正则表达式解决方案是
$re = '~(?:[\w\']+\s+){3}[\w\']+~';
$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
preg_match($re, $str, $match);
echo $match[0]; // => Lorem ipsum dolor sit
请参阅IDEONE demo,此处为regex demo。
preg_match
找到第一个与
(?:[\w\']+\s+){3}
- 包含1个字母字符或'
符号的3个序列,后跟1个以上的空格[\w\']+
- 1个字或'
字符。