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

如何修改Python re正则,排除匹配带@Override注解的存储过程及函数

两种方案都可以实现需求,你可以根据自己的场景选择:


方案1:直接修改现有正则实现

在原有正则开头添加负向零宽断言即可,Python 3.7及以上版本支持不定长负回顾断言,修改后的正则如下:

methodRegex = r"^\s*(?<!@Override\s*\n\s*)((FUNCTION|PROCEDURE)\s+(\w+))(.*?)BEGIN(.*?)^END\s*(\w+);"

这个正则会在匹配阶段直接跳过前面带有@Override注解的存储过程和函数,后续处理逻辑不需要做任何修改。


方案2:不改正则,在匹配结果中过滤

这种方案兼容性更强,逻辑简单不易出错,只需要在遍历匹配结果时增加一行判断即可,修改后的代码如下:

methodRegex = r"^\s*((FUNCTION|PROCEDURE)\s+(\w+))(.*?)BEGIN(.*?)^END\s*(\w+);"

methodMatches = re.finditer(methodRegex, fContent, re.DOTALL | re.MULTILINE | re.IGNORECASE | re.VERBOSE)
        
for methodMatchNum, methodMatch in enumerate(methodMatches, start=1):
    methodContent=methodMatch.group()
    # 过滤带@Override注解的方法
    if '@Override' in methodContent:
        continue
    methodNameFull=methodMatch.group(1)
    methodType=methodMatch.group(2)
    methodName=methodMatch.group(3)
    # 原有后续业务逻辑

如果没有特殊的性能要求,更推荐用第二种方案,维护成本更低。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:54:05