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

如何通过正则表达式将字符串转为字符串数组?附输入输出示例

最优方案:正则捕获组拆分法

嘿,这个需求用正则表达式的拆分(split)+ 捕获组就能完美解决,而且是代码简洁、性能优异的最优方案,咱们来一步步说清楚:

核心思路

我们需要把{...}格式的块作为单独元素保留,同时把它们前后的普通文本也拆分成独立元素。正则的split方法如果搭配捕获组,会自动把匹配到的分隔符(也就是{...}块)也加入结果数组,正好满足需求。

代码实现(以JavaScript为例)

const input = "this is a {test} for {performance}.";
// 正则捕获组:匹配{开头、非}字符结尾的完整块
const splitRegex = /({[^}]+})/;
// 拆分后过滤掉可能出现的空字符串
const result = input.split(splitRegex).filter(part => part !== '');

console.log(result);
// 输出:["this is a ", "{test}", " for ", "{performance}", "."]

正则解释

  • ({[^}]+}):外层括号是捕获组,确保split时保留匹配的内容
  • {:匹配左大括号
  • [^}]+:匹配任意非右大括号的字符(至少一个),确保不会提前终止匹配
  • }:匹配右大括号

其他语言示例(Python)

如果用Python,逻辑完全一致:

import re
input_str = "this is a {test} for {performance}."
split_regex = r'({[^}]+})'
result = re.split(split_regex, input_str)
# 过滤空字符串
result = [part for part in result if part]

print(result)
# 输出:['this is a ', '{test}', ' for ', '{performance}', '.']

为什么这是最优方案?

  • 性能高效:正则引擎是原生优化过的,比手动遍历字符串逐个字符判断要快得多
  • 代码简洁:核心逻辑仅一行,可读性高,维护成本低
  • 场景覆盖全:能处理{...}在开头、结尾、连续出现等各种边界情况,比如输入"{first}middle{second}"会输出["{first}", "middle", "{second}"]
  • 扩展性强:如果后续需要调整匹配规则,只需要修改正则表达式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:17:31