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

正则表达式删除括号内容出错,求助仅删除末尾代码(P37.2)

正则匹配处理括号内容的解决方案

问题分析

你之前使用的正则\(.*\)采用贪婪匹配,会从第一个(匹配到最后一个),导致中间的括号内容甚至括号外的文本也被误删,比如Neonatal(disseminated) listeriosis(P37.2)会被匹配成(disseminated) listeriosis(P37.2),最终只剩Neonatal。以下是针对两种需求的正确正则实现:

一、删除所有括号内的内容

使用排除括号的字符集精准匹配单个括号对:

import re

# 匹配任意单个括号及其内部内容
regex_remove_all = r"\([^()]*\)"
df['en'] = df['en'].apply(lambda x: re.sub(regex_remove_all, '', x).strip())
df['ko'] = df['ko'].apply(lambda x: re.sub(regex_remove_all, '', x).strip())
  • [^()]*:匹配任意非括号的字符,确保只匹配单个括号对,不会跨括号贪婪匹配
  • strip():去除替换后可能残留的多余空格

处理后结果:

enko
Neonatal listeriosis신생아 리스테리아증

二、仅删除末尾的(P37.2)

通过$锚定字符串末尾,只匹配最后一个符合格式的括号:

import re

# 匹配末尾的(PXX.X)格式内容,若需匹配任意末尾括号可改用 r"\([^()]*\)$"
regex_remove_trailing = r"\(P\d+\.\d+\)$"
df['en'] = df['en'].apply(lambda x: re.sub(regex_remove_trailing, '', x).strip())
df['ko'] = df['ko'].apply(lambda x: re.sub(regex_remove_trailing, '', x).strip())
  • \(P\d+\.\d+\)$:精准匹配以(P开头、数字加小数点加数字结尾的末尾括号
  • $:锚定字符串末尾,确保只修改最后一个括号内容

处理后结果:

enko
Neonatal(disseminated) listeriosis신생아(파종성) 리스테리아증

内容的提问来源于stack exchange,提问作者이승우

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:50:22