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

编写Lambda函数实现正则捕获组匹配替换冗余括号内容

问题需求

需要编写Lambda函数结合正则表达式,移除字符串中冗余的括号内容。匹配规则为:数字后紧跟括号,括号内仅包含与前置数字完全相同的内容(允许括号内有空格),此时移除该括号及内部内容。

初始代码框架

import re

input_text = "Asegurarse que halla 4(4) o 5( 5  ) de ellos, también 24(24 48), o sino 24, (24 )no 66(70 y seis), o () 56(), 56(5 6) ssd 56"

lambda_fuction_result = lambda m: re.sub(r"", "", m.group())

input_text = re.sub(capture_groups_with_regex, lambda_fuction_result, input_text)

print(repr(input_text)) # --> output

期望输出

"Asegurarse que halla 4 o 5 de ellos, también 24(24 48), o sino 24, (24 )no 66(70 y seis), o () 56(), 56(5 6) ssd 56"

完善后的代码实现

import re

input_text = "Asegurarse que halla 4(4) o 5( 5  ) de ellos, también 24(24 48), o sino 24, (24 )no 66(70 y seis), o () 56(), 56(5 6) ssd 56"

# 正则表达式:捕获前置数字,以及括号内仅含该数字(允许空格)的内容
capture_groups_with_regex = r'(\d+)\(\s*\1\s*\)'

# Lambda函数:只保留捕获到的前置数字,移除括号及内部内容
lambda_fuction_result = lambda m: m.group(1)

input_text = re.sub(capture_groups_with_regex, lambda_fuction_result, input_text)

print(repr(input_text))

代码解释

  • 正则表达式 r'(\d+)\(\s*\1\s*\)':
    • (\d+):捕获一个或多个数字,作为分组1;
    • \(:匹配左括号;
    • \s*:匹配0个或多个空格;
    • \1:引用分组1的内容,确保括号内的内容和前置数字完全一致;
    • \s*:再次匹配括号内的空格;
    • \):匹配右括号。
  • Lambda函数:直接返回捕获到的前置数字(分组1的内容),相当于把数字(数字)或数字( 数字 )替换成数字,达到移除冗余括号的效果。

内容的提问来源于stack exchange,提问作者Matt095

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:50:35