如何提取字符串中特定字符包裹的所有子串并生成数组?
解决方法:从字符串中提取所有括号内的名称
嘿,我来帮你搞定这个问题!你之前只拿到第一个名字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
相关产品推荐
相关产品推荐

