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

如何用Python正则表达式提取字符串中括号内的单个单词

提取字符串中被括号包裹的单个单词

嘿,我明白你要做的事了——从那种嵌套括号的字符串里揪出像CNN这样被单独一对括号包起来的单个单词对吧?别担心,正则表达式其实没那么复杂,我给你一步步讲清楚。

核心正则表达式

首先,我们需要的正则是这样的:

\(([A-Za-z0-9]+)\)

我来拆解一下每个部分的作用:

  • \(:转义左括号,因为括号在正则里是特殊符号,必须加反斜杠才能匹配实际的左括号
  • ([A-Za-z0-9]+):这是一个捕获组,用来提取我们想要的单词。A-Za-z0-9匹配字母和数字,+表示至少有一个字符(确保不是空的括号)
  • \):转义右括号,和左括号同理

实际代码示例(以Python为例)

拿你给的字符串来测试,代码可以这么写:

import re

# 你的目标字符串
target_text = "(ROOT (S (NP (NNP Washington) (NNP (CNN)) (NNP Donald) (NNP Trump)) (VP (VBD was) (VP (VBN asked) (PP ( by) (NP (NP (DT a) (NN member)) (PP (IN of) (NP (DT a) (NNP Fox) (NNP News) (NN town) (NN hall) (NN audience))))) (NP-TMP (DT this) (NN week)) (SBAR (WHNP (WP what)) (S (NP (PRP he)) (VP (MD would) (VP (VB do) (S (VP (TO to) (VP (VB reduce) (N..."

# 用正则提取匹配的单词
result = re.findall(r'\(([A-Za-z0-9]+)\)', target_text)
print(result)  # 输出结果里会包含 ['CNN'],这就是你要的内容

进阶调整

如果你的需求更严格(比如只提取全大写的单词,像例子里的CNN),可以把正则改成:

\(([A-Z]+)\)

这样就只会捕获括号里全是大写字母的单词,过滤掉其他不符合的情况。

为什么这个正则能满足需求?

它只会匹配**括号内只有单个单词(没有空格、嵌套括号)**的情况,像(NNP Washington)这种括号里有空格和其他内容的会被自动排除,正好符合你要的“被左右括号包裹的单个单词”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:26