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

PHP字符串按空格拆分,但NOT后空格不拆分的实现方法

问题:如何将字符串中"NOT"与其后续单词合并为整体拆分

现有字符串:$string = "wanted NOT IN OR",使用preg_match_all('/\w+/', $string, $WordArray)会将每个单词拆分为独立数组元素。需求是保留"NOT"与后续单词为一个整体,最终得到数组['wanted', 'NOT IN', 'OR'],尝试preg_split('/\s|\bNOT\s/')未达到预期效果,求正确实现方式。


解决方案

方法一:使用preg_match_all匹配目标模式

直接构造正则表达式,优先匹配NOT + 单词的组合,再匹配普通单词:

$string = "wanted NOT IN OR";
preg_match_all('/NOT \w+|\w+/', $string, $matches);
$WordArray = $matches[0];
print_r($WordArray);

输出结果:

Array
(
    [0] => wanted
    [1] => NOT IN
    [2] => OR
)

正则逻辑:NOT \w+会优先匹配"NOT"加空格加后续单词的组合,剩下的普通单词由\w+匹配,确保符合需求。

方法二:调整preg_split的正则规则

使用负向预查来跳过"NOT"后面的空格,只拆分其他位置的空格:

$string = "wanted NOT IN OR";
$WordArray = preg_split('/\s(?!NOT)/', $string);
print_r($WordArray);

输出结果和方法一一致。
正则逻辑:\s(?!NOT)表示匹配后面不紧跟"NOT"的空格,也就是说,只有当空格之后不是"NOT"时才会触发拆分,这样"NOT"后面的空格会被保留,从而将"NOT IN"合并为一个元素。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:15:31