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

如何在'''特殊字符间分割字符串并提取目标子串?

提取字符串中被'''包裹的标签

没问题,这事儿用正则表达式就能轻松解决!针对你给出的字符串,我们可以通过匹配三个单引号包裹的内容,提取出里面的标签并组成数组。

方法一:使用match+map快速实现

这是最简洁的写法,一行代码就能搞定:

const str = " My random text '''tag1''' '''tag2''' ";
const tags = str.match(/'''(.*?)'''/g)?.map(item => item.replace(/'''/g, '').trim()) || [];
console.log(tags); // 输出: ["tag1", "tag2"]

代码解释:

  • /'''(.*?)'''/g:全局匹配所有被三个单引号包裹的内容。其中(.*?)是非贪婪捕获,确保只会匹配到相邻的两个'''之间的内容,不会把多个标签连在一起匹配。
  • ?.map(...):如果match返回null(也就是没有找到任何标签),会直接跳过map避免报错。
  • replace(/'''/g, ''):去掉每个匹配项前后的三个单引号。
  • trim():处理标签前后可能存在的空格(如果你的标签本身带空格需要保留,可以去掉这个方法)。
  • || []:兜底处理,确保没有匹配到内容时返回空数组。

方法二:使用exec循环捕获(更灵活)

如果需要对每个匹配到的标签做更复杂的处理,这种循环捕获的方式会更可控:

const str = " My random text '''tag1''' '''tag2''' ";
const tagRegex = /'''(.*?)'''/g;
const tags = [];
let currentMatch;

// 循环执行exec,直到没有匹配项
while ((currentMatch = tagRegex.exec(str)) !== null) {
  // currentMatch[1]就是捕获到的标签内容,trim后推入数组
  tags.push(currentMatch[1].trim());
}

console.log(tags); // 输出: ["tag1", "tag2"]

注意事项:

如果你的标签内容里可能包含单个或两个连续的单引号(不是三个),这两种方法依然有效,因为我们是以三个连续单引号作为匹配边界的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:15