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

正则表达式匹配多分隔符:如何同时捕获括号内外内容?

当然可行!其实你现有的正则已经具备这个能力

你的正则表达式\(([^)]*)\)里,([^)]*)是一个捕获组——它的作用就是专门匹配并保存括号之间的内容。你之前觉得失败,大概率是没正确提取捕获组的结果,而非正则本身有问题。

举个实际的例子,针对你提供的字符串"*- (Hello) + (World) -":

  • 整个正则的匹配结果是(Hello)和(World)(完整带括号的字符串)
  • 每个匹配对应的捕获组(也就是括号内的内容)是Hello和World

下面是不同场景下的获取方式:

在代码中提取结果

Python 示例

import re

text = "*- (Hello) + (World) -"
pattern = r'\(([^)]*)\)'

# 直接获取所有括号内的内容列表
inner_texts = re.findall(pattern, text)
print(inner_texts)  # 输出: ['Hello', 'World']

# 同时获取完整匹配和括号内内容
for match in re.finditer(pattern, text):
    full_match = match.group()       # 带括号的完整字符串
    inner_content = match.group(1)   # 括号内的独立内容
    print(f"完整匹配: {full_match}, 括号内内容: {inner_content}")

JavaScript 示例

const text = "*- (Hello) + (World) -";
const pattern = /\(([^)]*)\)/g;
let matchResult;

while ((matchResult = pattern.exec(text)) !== null) {
  const fullMatch = matchResult[0];    // 带括号的完整字符串
  const innerContent = matchResult[1]; // 括号内的独立内容
  console.log(`完整匹配: ${fullMatch}, 括号内内容: ${innerContent}`);
}

在正则测试工具中查看

大多数正则测试工具默认只会展示完整匹配结果,你需要找到“捕获组”或“分组”的面板,才能看到括号内的独立匹配项。

可选优化:命名捕获组

如果想让代码更易读,可以给捕获组起个名字,比如:

\((?P<inner>[^)]*)\)

这样在Python中可以通过match.group('inner')来获取括号内的内容,代码可读性会更高。

总结一下:完全不需要修改你的核心正则逻辑,只要正确利用捕获组的特性,就能同时得到带括号的完整匹配和括号内的独立内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:25:56