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

如何提取字符串中特定字符包裹的所有子串并生成数组?

解决方法:从字符串中提取所有括号内的名称

嘿,我来帮你搞定这个问题!你之前只拿到第一个名字Yossi,大概率是用了仅返回单个匹配结果的函数(比如PHP里的preg_match()),没有启用全局匹配的功能。下面给你具体的实现方案:

以PHP为例(从你的变量格式看,应该是PHP场景)

首先你的原始字符串:

$names = "The names are: [Yossi] & [Jane] & [Mono] & [Kiko]";

我们可以用preg_match_all()函数配合正则表达式,一次性提取所有括号内的名称:

// 定义正则:匹配[]包裹的内容,非贪婪模式避免匹配多个括号的内容
preg_match_all('/\[(.*?)\]/', $names, $matches);

// $matches[1] 就是我们需要的名称数组
$nameList = $matches[1];

// 打印结果看看
print_r($nameList);

运行后会得到你想要的数组:

Array
(
    [0] => Yossi
    [1] => Jane
    [2] => Mono
    [3] => Kiko
)

正则表达式说明

  • \[ 和 \]:转义方括号,因为它们在正则里是特殊字符,这里要匹配字面意义的括号
  • (.*?):非贪婪匹配模式,匹配括号内的任意字符,直到遇到下一个]就停止,这样不会把[Yossi] & [Jane]当成一个整体匹配

如果是JavaScript场景(补充参考)

要是你用的是JS,也可以用全局正则来实现:

const namesStr = "The names are: [Yossi] & [Jane] & [Mono] & [Kiko]";
const regex = /\[(.*?)\]/g;
const nameList = [];
let matchResult;

// 循环提取所有匹配项
while ((matchResult = regex.exec(namesStr)) !== null) {
    nameList.push(matchResult[1]);
}

console.log(nameList); // 输出:["Yossi", "Jane", "Mono", "Kiko"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:00:24