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

如何用正则表达式选中包含括号在内的括号间文本?

匹配包含括号本身的括号内文本的正则表达式

核心问题修正

你之前写的()(.*)和((.*))之所以无效,是因为括号在正则表达式里是特殊元字符,用来定义分组,直接写会被当成语法逻辑,而非匹配字面的(和)。另外.*是贪婪匹配,容易过度匹配多个括号的内容。

针对无嵌套括号的解决方案(90%场景适用)

如果你的文本里没有括号嵌套(比如不会出现(a (b) c)这种情况),用下面两种正则都可以:

方案1:非贪婪匹配法

\(.*?\)
  • 解释:
    • \(:转义左括号,匹配字面的(
    • .*?:非贪婪模式匹配任意字符(默认不含换行),直到遇到第一个\)就停止
    • \):转义右括号,匹配字面的)

方案2:排除字符法(更高效)

\([^)]*\)
  • 解释:
    • [^)]:匹配除了右括号之外的任意字符
    • *:匹配前面的字符0次或多次,直到遇到右括号就停止
    • 这种写法不用回溯,比非贪婪匹配效率更高

示例验证

  • 输入:Text (the text) → 匹配结果:(the text)
  • 输入:Text text text (the text again) → 匹配结果:(the text again)

关于嵌套括号的补充(可选)

如果你的文本存在括号嵌套(比如(hello (world) test)),上面的正则只能匹配到(hello (,这时候需要用支持递归的正则引擎(比如Python的re模块、PCRE引擎),正则会复杂一些,比如:

\((?:[^()]|(?R))*\)

不过作为新手,先掌握无嵌套场景的写法就足够应付大部分需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:54:54