如何仅在字符串末尾有两个括号块时删除最后一个括号内的文本
解决方案
你可以用正则分组替换的方式实现需求,该方案兼容性强,适用于绝大多数支持正则的编程语言/工具:
核心正则
/(\([^)]+\))\s*\([^)]+\)(\.?)$/
规则说明
- 正则末尾的
$锚定字符串末尾,确保只匹配结尾的内容 - 第一个捕获组
(\([^)]+\))匹配倒数第二个完整的括号包裹内容 - 中间的
\s*\([^)]+\)匹配需要删除的最后一个括号包裹内容(含前面的空格) - 第二个捕获组
(\.?)匹配结尾可选的英文句号 - 替换时直接用
$1$2(不同语言替换占位符可能略有差异,比如Python用\1\2),即可保留前一个括号和结尾标点,自动删除最后一个括号内容
代码示例(JavaScript)
function processStr(str) { return str.replace(/(\([^)]+\))\s*\([^)]+\)(\.?)$/, '$1$2'); } // 测试用例1 console.log(processStr("Text (aaa) Text (bbb) Text (ccc) (ddd).")); // 输出:Text (aaa) Text (bbb) Text (ccc). // 测试用例2 console.log(processStr("Text (aaa) Text (bbb) Text (ccc).")); // 输出:Text (aaa) Text (bbb) Text (ccc).
代码示例(Python)
import re def process_str(s): return re.sub(r'(\([^)]+\))\s*\([^)]+\)(\.?)$', r'\1\2', s)
内容的提问来源于stack exchange,提问作者AbsoluteBeginner
相关产品推荐
相关产品推荐

