如何修改Python正则表达式实现删除指定名称列表内的函数?
调整后实现代码
import re # 定义待删除的函数名称列表,可直接修改该列表调整删除范围 delete_func_names = ["EFGHI", "NOPQRS"] # 将名称列表转换为正则匹配的或模式,自动转义特殊字符避免匹配异常 name_pattern = '|'.join(re.escape(name) for name in delete_func_names) # 替换原正则中的长度匹配部分为指定名称匹配,原有边界匹配逻辑保持不变 pattern = rf"(?s)FUNCTION ({name_pattern})(.*?)\b\w*(?<!,)END\b" regex = re.compile(pattern) with open('functions.f', 'r') as input_file: with open('stripped.f', 'w') as output_file: result = regex.sub('', input_file.read()) output_file.write(result)
改动说明
- 新增可配置的待删除函数名称列表,修改列表内容即可调整需要删除的函数范围
- 用
re.escape处理每个函数名,避免名称中包含正则特殊字符时匹配出错 - 仅替换原正则中匹配4-6位大写字母的部分为指定名称的或匹配规则,原有的「END前无逗号才匹配」的边界逻辑完全保留,和你之前的匹配规则一致
- 针对你提供的示例输入,运行后输出完全符合预期,会保留ABCD、JKLM对应的两段函数
内容的提问来源于stack exchange,提问作者user10990669
相关产品推荐
相关产品推荐

