如何编写正则仅删除包含指定关键词的括号及内部所有内容
正则匹配删除含指定关键词的小括号方案
核心正则表达式
使用如下正则即可实现需求:/\([^()]*?(banana|apple)[^()]*?\)/gi
正则参数说明
- 修饰符
g:全局匹配所有符合规则的括号 - 修饰符
i:匹配时忽略大小写,满足不区分关键词大小写的要求
正则逻辑拆解
\(:转义匹配左小括号[^()]*?:非贪婪匹配任意非括号字符,避免跨括号匹配的问题(banana|apple):匹配目标关键词,新增关键词直接用|拼接即可[^()]*?:继续非贪婪匹配括号内剩余的非括号字符\):转义匹配右小括号
代码实现示例
JavaScript 实现
const rawStr = 'this is a string (bla BANANA ) another set of parentheses (bla bla)'; // 替换匹配到的括号内容为空 let processedStr = rawStr.replace(/\([^()]*?(banana|apple)[^()]*?\)/gi, ''); // 可选:规整多余的空格 processedStr = processedStr.replace(/\s+/g, ' ').trim(); console.log(processedStr); // 输出:this is a string another set of parentheses (bla bla)
Python 实现
import re raw_str = "this is a string (blaAPPLE bla) another set of parentheses (bla bla)" pattern = re.compile(r'\([^()]*?(banana|apple)[^()]*?\)', re.IGNORECASE) processed_str = pattern.sub('', raw_str) # 可选:规整多余空格 processed_str = re.sub(r'\s+', ' ', processed_str).strip() print(processed_str) # 输出:this is a string another set of parentheses (bla bla)
适配场景验证
该正则可覆盖你给出的所有测试场景:
- 括号内含独立关键词的场景:如
(bla bla banana bla bla)、(banana bla bla)可正常匹配删除 - 关键词和其他字符连写的场景:如
(bla blabanana)、(blaAPPLE bla)可正常匹配删除 - 关键词大小写混合的场景:如
(bla BANANA )、( apple bla)可正常匹配删除 - 不含指定关键词的括号会完整保留,不会被误删
注:该方案适用于单层小括号的场景,如果存在括号嵌套的需求,需要使用支持递归匹配的正则逻辑实现。
内容的提问来源于stack exchange,提问作者Edmundo Biglia
相关产品推荐
相关产品推荐

