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

正则表达式提取字符串中括号内子字符串的问题求助

如何提取字符串中括号内的所有子字符串

咱们先来拆解下你之前的尝试为啥没成功,再给你对应的正确解法:

问题1:提取小括号内的内容(原需求)

你最初的目标是从" I wanted my friends (he), (she), (they) around"里提取["he", "she", "they"],但用了r'^{.}$'这个正则:

  • 这个正则的意思是匹配整个字符串必须以{开头、任意单个字符结尾,完全不符合你要抓小括号内容的需求,所以输出空列表很正常。

正确解法(小括号场景)

用这个正则表达式:r'\(([^)]+)\)',解释下:

  • \(:转义匹配左小括号(因为括号在正则里是特殊字符,必须转义)
  • ([^)]+):捕获组,匹配任意非右小括号的字符([^)]表示排除右括号,+表示至少匹配1个字符)
  • \):转义匹配右小括号

代码示例:

import re
original_str = " I wanted my friends (he), (she), (they) around"
result = re.findall(r'\(([^)]+)\)', original_str)
print(result)  # 输出: ['he', 'she', 'they']

问题2:提取大括号内的内容(你第二个测试用例)

你后来用了copy = '{he},{she}, {they}',但正则写了r'\{([^]]*)\}',这里的问题是:

  • [^]]表示匹配非右方括号的字符,但你的括号是大括号},所以这个规则会一直匹配到字符串末尾的},导致把所有内容都抓成一个字符串。

正确解法(大括号场景)

把正则改成r'\{([^}]+)\}',把排除的字符换成大括号的右括号}就行:

代码示例:

import re
copy = '{he},{she}, {they}'
result = re.findall(r'\{([^}]+)\}', copy)
print(result)  # 输出: ['he', 'she', 'they']

通用思路总结

不管是哪种括号(小括号、大括号、方括号),提取括号内内容的核心逻辑都是:

  • 转义匹配左括号(比如\(、\{、\[)
  • 用捕获组匹配除了对应右括号之外的所有字符(比如[^)]+、[^}]+、[^]]+)
  • 转义匹配右括号(比如\)、\}、\])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 15:47:50