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

如何提取文本中两个指定标记之间的值并添加到数组中?

实现方法

这种固定前后标记的内容提取,直接用正则非贪婪匹配是最省事的,不用写复杂的字符串切割逻辑,几行代码就能搞定,还能自动适配文本换行、多段匹配的场景。

核心匹配规则

就拿你示例里的前后标记都是[TEST]的场景来说,正则规则写为 /\[TEST\](.*?)\[TEST\]/s:

  • 前后的\[TEST\]是转义后的标记匹配:因为[ ]是正则的特殊符号,必须加反斜杠转义才能匹配字面的方括号
  • 中间的(.*?)是捕获组,用非贪婪模式匹配两个标记之间的所有内容,不会出现从第一个标记直接跨到最后一个标记、抓出一大段错误内容的问题
  • 末尾的s修饰符是让正则里的.可以匹配换行符,适配你示例里长文本带换行的情况

可直接复用的代码

PHP 版本(和你示例的数组格式完全对应)

// 待处理的原始文本
$rawText = '"Lorem ipsum dolor sit amet, [TEST]consetetur[TEST] sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
[TEST]consetetur[TEST] sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et [TEST]justo[TEST] duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
dolor sit amet."';

// 自定义你要匹配的前后标记,换其他标记也能直接用
$tag = '[TEST]';
$quotedTag = preg_quote($tag, '/'); // 自动转义标记里的正则特殊字符
preg_match_all("/{$quotedTag}(.*?){$quotedTag}/s", $rawText, $matchRes);

// 最终结果就是你要的索引数组
$result = $matchRes[1];

运行后$result的输出和你预期完全一致:

Array
(
    [0] => consetetur
    [1] => consetetur
    [2] => justo
)

JavaScript 版本

const rawText = `你的原始长文本`;
const tag = '[TEST]';
// 转义正则特殊字符的工具方法
const escapeReg = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const matchReg = new RegExp(`${escapeReg(tag)}(.*?)${escapeReg(tag)}`, 'gs');
const result = [...rawText.matchAll(matchReg)].map(item => item[1]);

避坑提醒

  • 绝对不要把非贪婪匹配写成贪婪匹配:也就是别把.*?写成.*,否则会直接匹配从第一个标记到最后一个标记的所有内容,完全拿不到正确结果
  • 只要标记里包含正则特殊符号(比如[] . * ? /这类),一定要先转义再拼正则,不然匹配逻辑会乱
  • 如果需要忽略标记前后的空格,可以在正则里标记的前后加\s*匹配空白字符,按需调整就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:39:50