You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Regex技术求助:匹配年份与品牌并移除,提取车型/配置信息

解决车型/配置提取的正则方案

没问题,我来帮你搞定这个正则提取需求!从你的示例字符串来看,所有内容都遵循「四位年份 + 品牌(1个或多个单词) + 车型/配置」的结构,我们只需要匹配并移除开头的年份和品牌部分,就能得到目标内容。

正则表达式方案

替换式(直接移除不需要的部分)

使用这个正则匹配开头的年份+品牌部分,替换为空字符串即可:

^\d{4}\s+(?:\w+\s+)+

捕获式(提取需要的部分)

如果你更习惯用捕获组直接获取目标内容,可以用这个正则,取第一个捕获组的结果:

^\d{4}\s+(?:\w+\s+)+(.*)$

正则语法解释

让我们拆解一下正则的各个部分:

  • ^:锚定字符串的开头,确保我们只匹配最前面的内容
  • \d{4}:精准匹配4位数字(对应年份)
  • \s+:匹配一个或多个空格(分隔年份、品牌、车型的空格)
  • (?:\w+\s+)+:非捕获组,匹配「单词+空格」的组合1次或多次(对应品牌部分,不管是单单词的Ford还是多单词的Aston Martin
  • (.*):捕获组,匹配剩下的所有内容(也就是我们需要保留的车型/配置信息)

代码示例(JavaScript)

这里用JavaScript展示两种方案的实际效果:

替换方案

const carStrings = [
  "1990 Ford Explorer",
  "1994 Ford Explorer Eddie Bauer",
  "1996 Jeep Cherokee Sport",
  "2000 Aston Martin DB7"
];

const removeRegex = /^\d{4}\s+(?:\w+\s+)+/;
const results = carStrings.map(str => str.replace(removeRegex, ""));

console.log(results);
// 输出: ["Explorer", "Explorer Eddie Bauer", "Cherokee Sport", "DB7"]

捕获组方案

const carStrings = [
  "1990 Ford Explorer",
  "1994 Ford Explorer Eddie Bauer",
  "1996 Jeep Cherokee Sport",
  "2000 Aston Martin DB7"
];

const captureRegex = /^\d{4}\s+(?:\w+\s+)+(.*)$/;
const results = carStrings.map(str => str.match(captureRegex)[1]);

console.log(results);
// 输出: ["Explorer", "Explorer Eddie Bauer", "Cherokee Sport", "DB7"]

注意事项

这个方案基于你提供的示例字符串规律,如果后续遇到品牌包含特殊字符(比如连字符)、或者车型在前的特殊情况,只需要微调正则中的\w部分(比如改成[\w-]+)即可适配。

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

火山引擎 最新活动