如何替换字符串中DMG RENT FTR相关表达式为空白值
字符串指定关联片段替换方案
普通全字匹配替换只能替换固定关键词,要连带匹配关键词后面的关联内容,使用正则匹配覆盖所有目标场景即可一次性完成替换。
匹配规则设计
需要覆盖两类目标片段,无需多次调用替换函数:
- 公式乘法场景:
DMG RENT FTR后接任意数量空格、乘号*、任意数量空格的片段 - 变量赋值场景:
DMG RENT FTR后接任意数量空格、等号=、任意数量空格、整数/小数值、分号;、任意数量空格的片段
通用正则表达式
DMG RENT FTR\s*(?:\*\s*|=\s*\d+(?:\.\d+)?;\s*)
规则拆解:
DMG RENT FTR:匹配固定关键词\s*:匹配0到多个空白字符,兼容不同排版下的空格数量差异(?:\*\s*|=\s*\d+(?:\.\d+)?;\s*):匹配两类后缀,满足任一条件即可命中\*\s*:对应公式场景的乘号及后续空格=\s*\d+(?:\.\d+)?;\s*:对应赋值场景的等号、数值(支持整数、小数格式)、分号及前后空格
代码示例(Python)
import re raw_content = """ADJ BASE RATE = ROUND(( BASE RATE * COV CHG FTR * IL LESS DED FTR * DMG RENT FTR * MED EXP ILF * MISC CRDT FTR * AMEND LL EXCL FCTR),3) BASE RATE = 43.487; COV CHG FTR = 1; IL LESS DED FTR = 2.44; DMG RENT FTR = 1; MED EXP ILF = 1; MISC CRDT FTR = 1; AMEND LL EXCL FCTR = 1 CUSTOME RATE = ROUND(( BASE RATE * COV CHG FTR * IL LESS DED FTR * DMG RENT FTR * MED EXP ILF * MISC CRDT FTR * AMEND LL EXCL FCTR),3) CUSTOME RATE = 43.487; COV CHG FTR = 1; IL LESS DED FTR = 2.44; DMG RENT FTR = 1.45; MED EXP ILF = 1; MISC CRDT FTR = 1; AMEND LL EXCL FCTR = 1""" # 执行替换 result = re.sub(r"DMG RENT FTR\s*(?:\*\s*|=\s*\d+(?:\.\d+)?;\s*)", "", raw_content) print(result)
如果使用SQL、Java等其他语言/工具,正则逻辑完全通用,仅需根据语法要求调整反斜杠转义即可,例如SQL中使用时将\s转义为\\s即可。
替换后输出
执行替换后得到的结果和预期完全一致:
ADJ BASE RATE = ROUND(( BASE RATE * COV CHG FTR * IL LESS DED FTR * MED EXP ILF * MISC CRDT FTR * AMEND LL EXCL FCTR),3) BASE RATE = 43.487; COV CHG FTR = 1; IL LESS DED FTR = 2.44; MED EXP ILF = 1; MISC CRDT FTR = 1; AMEND LL EXCL FCTR = 1 CUSTOME RATE = ROUND(( BASE RATE * COV CHG FTR * IL LESS DED FTR * MED EXP ILF * MISC CRDT FTR * AMEND LL EXCL FCTR),3) CUSTOME RATE = 43.487; COV CHG FTR = 1; IL LESS DED FTR = 2.44; MED EXP ILF = 1; MISC CRDT FTR = 1; AMEND LL EXCL FCTR = 1
内容的提问来源于stack exchange,提问作者Kiran Patil
相关产品推荐
相关产品推荐

