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

如何用正则表达式提取USD-M后逗号及AND分隔的单词?

正则直接提取USD-M后由逗号/and分隔的单词

要直接通过正则提取目标单词,无需后续拆分,可以利用正向断言限定单词的上下文范围,结合全局匹配实现需求。

正则表达式说明

/(?<=USD-M(?:\s+\w+(?:\s*(?:,|and)\s*))*)\w+(?=\s*(?:,|and|\s+\w+))/gi
  • 正向后行断言 (?<=USD-M(?:\s+\w+(?:\s*(?:,|and)\s*))*):确保目标单词位于USD-M之后,且前面是合法的分隔序列(单词+逗号/and),避免匹配句子其他位置的无关单词。
  • \w+:匹配单个目标单词。
  • 正向先行断言 (?=\s*(?:,|and|\s+\w+)):确保单词后面是逗号、and,或是后续非目标单词(比如Perpetual/Spot等),限定目标序列的结束边界。
  • gi 标志:g表示全局匹配所有符合条件的单词,i表示忽略大小写(适配可能的大小写变体)。

代码示例

// 多单词场景
const input1 = "We will launch new USD-M NFP, MOVR, PLEX and GAS Perpetual Contracts";
const regex = /(?<=USD-M(?:\s+\w+(?:\s*(?:,|and)\s*))*)\w+(?=\s*(?:,|and|\s+\w+))/gi;
const result1 = input1.match(regex);
console.log(result1); // 输出: ['NFP','MOVR','PLEX','GAS']

// 单个单词场景
const input2 = "We will launch new USD-M NFP Spot Market";
const result2 = input2.match(regex);
console.log(result2); // 输出: ['NFP']

另一种更直观的实现(结合matchAll)

如果觉得断言正则稍复杂,也可以用matchAll配合捕获组,先匹配带上下文的目标单词,再提取核心内容:

const regex = /(?:USD-M\s+|\s*(?:,|and)\s*)(\w+)/gi;

// 处理多单词场景
const matches1 = [...input1.matchAll(regex)];
const result1 = matches1.map(match => match[1]);
console.log(result1); // ['NFP','MOVR','PLEX','GAS']

// 处理单个单词场景
const matches2 = [...input2.matchAll(regex)];
const result2 = matches2.map(match => match[1]);
console.log(result2); // ['NFP']

这种方式逻辑更清晰:匹配USD-M开头或逗号/and分隔符后的单词,通过捕获组提取核心内容,再整理成目标数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:40:30