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

如何从车型衍生字符串中提取首段含数字的大写车型名?

优化正则并实现车辆信息拆分(车型+衍生信息)

正则优化思路

原正则仅支持纯大写单词,无法匹配含数字、点号的车型(如XC40、ID.4)。根据需求,车型始终位于字符串开头,由大写字母、数字、点号组成,可通过两种方式实现拆分:

方案1:零宽断言拆分(适配preg_split)

用零宽断言定位车型与衍生信息的分界点,无需捕获额外内容:

/(?<=[A-Z0-9.])(?=[^A-Z0-9.])/
  • 正向回顾断言(?<=[A-Z0-9.]):确保分界点前是车型允许的字符
  • 正向先行断言(?=[^A-Z0-9.]):确保分界点后是非车型字符(比如空格、小写字母等)

方案2:精准匹配车型(适配preg_match,更可控)

直接匹配开头的车型段,再提取剩余内容:

/^([A-Z0-9.]+)\s*(.*)$/
  • ^([A-Z0-9.]+):匹配开头的车型字符(大写字母、数字、点)
  • \s*(.*)$:匹配后续所有衍生信息(含空格)

PHP代码实现

用preg_split拆分

$vehicleString = "XC40 T5 AWD Inscription Pro";
// 限制拆分次数为2,只拆成车型和衍生信息两部分
$splitResult = preg_split('/(?<=[A-Z0-9.])(?=[^A-Z0-9.])/', $vehicleString, 2);

$model = trim($splitResult[0]);
$derivativeInfo = isset($splitResult[1]) ? trim($splitResult[1]) : '';

// 输出结果
echo "车型: " . $model . PHP_EOL;
echo "衍生信息: " . $derivativeInfo . PHP_EOL;

用preg_match提取(推荐,逻辑更清晰)

$vehicleString = "ID.4 Pro Performance 77kWh";
if (preg_match('/^([A-Z0-9.]+)\s*(.*)$/', $vehicleString, $matches)) {
    $model = $matches[1];
    $derivativeInfo = trim($matches[2]);
    
    echo "车型: " . $model . PHP_EOL;
    echo "衍生信息: " . $derivativeInfo . PHP_EOL;
}

测试验证

测试输入1:

XC40 T5 AWD Inscription Pro
输出:

  • 车型: XC40
  • 衍生信息: T5 AWD Inscription Pro

测试输入2:

ID.4 Pro Performance 77kWh
输出:

  • 车型: ID.4
  • 衍生信息: Pro Performance 77kWh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:18