如何使用Regex提取字符串中连续大写单词并按组返回?
嘿,这个需求我之前处理过类似的,用正则就能轻松搞定!关键是要匹配连续的全大写单词序列,而不是单个大写单词,这样就能直接得到分组后的结果。
解决方案:用正则匹配连续全大写单词序列
首先,我们需要构造一个正则表达式,它能识别一个或多个连续的全大写单词,每个单词之间用空格分隔。
正则表达式解析
推荐使用这个模式:
\b[A-Z]+(?:\s+[A-Z]+)*\b
拆解一下每个部分的作用:
\b:单词边界,确保我们匹配的是完整的单词,不会把大写字母片段(比如THISis里的THIS)误匹配进来。[A-Z]+:匹配一个由大写字母组成的单词(至少1个字符)。(?:\s+[A-Z]+)*:这是一个非捕获组,用来匹配“一个或多个空格 + 一个大写单词”的组合,*表示这个组合可以出现0次或多次——这样就能把连续的大写单词串成一个完整的组。
代码示例(Python)
拿你给的示例字符串来测试:
import re input_text = "This is a UPPERCASE STRING, AND THIS IS ANOTHER one." # 定义正则模式 pattern = r'\b[A-Z]+(?:\s+[A-Z]+)*\b' # 提取所有匹配的序列 result_groups = re.findall(pattern, input_text) print(result_groups) # 输出结果:['UPPERCASE STRING', 'AND THIS IS ANOTHER']
特殊情况处理
如果你的字符串里可能包含带撇号的大写单词(比如O'CONNOR),可以稍微调整正则,把撇号加入允许的字符:
\b[A-Z']+(?:\s+[A-Z']+)*\b
这样就能匹配类似O'CONNOR SMITH这样的序列了。
内容的提问来源于stack exchange,提问作者Rubyen
相关产品推荐
相关产品推荐

