You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP正则匹配符合特定规则的单词?preg_split方案不符需求

搞定这个正则匹配问题的方法

嘿,我懂你的需求了:你要提取的是那些后面跟着空格的单词——第一个单词是字符开头、空格结尾,中间的单词是空格开头、空格结尾,而最后那个没有空格收尾的单词得排除掉。之前用preg_split("/\s+/",$string)不行,是因为它会把所有被空格分隔的内容都拆出来,包括最后那个不符合规则的,换用preg_match_all才是正确的思路。

具体实现代码

直接用这个正则就能精准匹配:

$string = "I am using php regular expressions";
preg_match_all('/\b\w+(?=\s)/', $string, $matches);
$out = $matches[0];

正则规则拆解

  • \b:单词边界,保证我们匹配的是完整的单词,不会误抓单词的一部分
  • \w+:匹配一个或多个字母、数字、下划线(如果你的单词有特殊字符,比如连字符,可以改成[a-zA-Z-]+这类更贴合你场景的规则)
  • (?=\s):正向预查断言,确保匹配到的单词后面紧跟着一个空格,这样自动就把最后那个没有空格结尾的单词排除了

测试效果

运行上面的代码,输出结果就是你想要的:

Array
(
    [0] => I
    [1] => am
    [2] => using
    [3] => php
    [4] => regular
)

如果你的单词有其他特殊格式需求,比如包含标点或者非英文字符,只需要调整\w+这部分的匹配规则就好啦。

内容的提问来源于stack exchange,提问作者Janardhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:15:02