如何调整正则表达式以移除字符串中括号格式不一致的大写缩写
正则调整说明
原正则的核心局限是强制要求缩写必须被完全成对的左右括号包裹,只要缺任意一侧括号,规则就无法匹配到残留内容。调整时直接去掉括号成对存在的硬约束,把可能出现的边界场景全部纳入匹配范围:
- 给左右括号添加可选标记
?,允许匹配仅带左括号、仅带右括号的不规范缩写块 - 规则开头加
\s*,连带吃掉缩写块前的多余空格,避免删除后留空 - 规则结尾加
[ .]*,吃掉缩写块后附带的点号、空格这类残留符号,适配示例里缩写后带点的格式 - 把大写字符的匹配从
[A-Z]*(允许0个大写,容易误匹配)调整为[A-Z]{2,},要求至少2个连续大写才判定为缩写,不会误删普通单词的首字母大写
完整可运行代码
import re text = ['Spain (ES)', 'Netherlands (NL .', 'United States (USA.', 'Russia RU)'] for string in text: # 替换原有匹配规则 cleaned_acronyms = re.sub(r'\s*\(?[A-Z]{2,}\)?[ .]*', '', string) # 清理末尾冗余空格,保证输出整洁 cleaned_acronyms = cleaned_acronyms.rstrip() print(cleaned_acronyms)
运行输出
Spain Netherlands United States Russia
内容的提问来源于stack exchange,提问作者blah
相关产品推荐
相关产品推荐

