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

如何用正则表达式匹配包含任意字母的括号内容

嘿,这个需求很明确,我给你整理一个精准的正则表达式,再拆解每个部分的作用,方便你理解和调整:

解决方案

要匹配包含任意字母的括号内容,可以用这个正则表达式:

\((?=[^)]*[a-zA-Z])[^)]*\)

正则拆解(逐个部分解释)

  • \(:转义匹配左括号(,因为括号在正则里是特殊元字符,必须转义才能匹配字面量
  • (?=[^)]*[a-zA-Z]):正向预查断言,这是核心逻辑:
    • [^)]*:匹配任意数量的「非右括号」字符(确保我们只在当前括号内部检查)
    • [a-zA-Z]:匹配任意大小写英文字母,这个断言会确保括号内至少存在一个字母,不符合的括号会直接被排除
  • [^)]*:匹配括号内的所有内容(从左括号后到右括号前的所有非右括号字符)
  • \):转义匹配右括号)

示例验证

拿你给出的字符串举例:

输入字符串:a17(1d34) xc

用上面的正则匹配后,会精准捕获到:(1d34)

再举个多括号的例子:

输入字符串:demo(123) (abc123) (xyz) test(45y6)

匹配结果会是:(abc123)、(xyz)、(45y6),纯数字的(123)会被直接排除。

扩展:支持Unicode字母

如果需要匹配所有Unicode标准的字母(不限于英文字母,比如中文、日文、希腊字母等),可以把[a-zA-Z]换成Unicode属性\p{L}(注意:部分正则引擎需要开启Unicode支持,比如Python的re模块要加re.UNICODE标志,JavaScript要在正则后加u标志):

\((?=[^)]*\p{L})[^)]*\)

注意事项

这个正则默认处理非嵌套括号的场景,如果你的字符串里有嵌套括号(比如(a(b)c)),它会匹配整个(a(b)c),因为它只会找到第一个右括号。如果需要处理嵌套括号,正则逻辑会复杂很多,这时候可能更适合用代码逻辑辅助处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:27:31