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

如何提取代码中含SET的语句及至闭合括号的完整内容?

提取代码中SET语句的解决方案

核心思路

要完成这个需求,关键是定位SET开头的行,然后持续追踪内容直到找到匹配的闭合括号),同时将跨多行的语句合并为整洁的单行格式。

具体实现(Python示例)

  • 先读取代码文件的所有行,预处理去除每行的换行符和首尾空白。
  • 遍历每行,遇到SET开头的行时,开始收集语句:
    1. 初始化当前语句为该行内容,统计其中的左右括号数量。
    2. 如果左括号数多于右括号,继续读取下一行,将内容追加到当前语句,更新括号计数,直到左右括号数量相等。
    3. 整理当前语句为单行格式,加入结果列表。
  • 最后输出所有收集到的完整SET语句。

示例代码

def extract_set_statements(file_path):
    result = []
    with open(file_path, 'r', encoding='utf-8') as f:
        # 预处理每行,去掉首尾空白和换行
        lines = [line.strip() for line in f]
    
    idx = 0
    line_count = len(lines)
    while idx < line_count:
        current_line = lines[idx]
        if current_line.startswith('SET'):
            stmt = current_line
            open_p = stmt.count('(')
            close_p = stmt.count(')')
            # 持续读取直到括号匹配
            while open_p > close_p and idx + 1 < line_count:
                idx += 1
                next_line = lines[idx].strip()
                stmt += ' ' + next_line
                open_p += next_line.count('(')
                close_p += next_line.count(')')
            # 确保语句完整截取到分号处
            if ';' in stmt:
                stmt = stmt[:stmt.index(';') + 1]
            result.append(stmt)
        idx += 1
    
    return '\n'.join(result)

# 使用示例:替换为你的代码文件路径
# print(extract_set_statements('code.txt'))

测试验证

输入代码:

SET var1 = FormatValue(A1,B1,B2); 
SET var2 = FormatValue(X1, 
X2, 
X3); 
DEFINE VAR3; 
SET var4 = FormatValue(z1,z2,
z3);

输出结果:

SET var1 = FormatValue(A1,B1,B2); 
SET var2 = FormatValue(X1, X2, X3); 
SET var4 = FormatValue(z1,z2, z3); 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:12:16