如何提取代码中含SET的语句及至闭合括号的完整内容?
提取代码中SET语句的解决方案
核心思路
要完成这个需求,关键是定位SET开头的行,然后持续追踪内容直到找到匹配的闭合括号),同时将跨多行的语句合并为整洁的单行格式。
具体实现(Python示例)
- 先读取代码文件的所有行,预处理去除每行的换行符和首尾空白。
- 遍历每行,遇到
SET开头的行时,开始收集语句:- 初始化当前语句为该行内容,统计其中的左右括号数量。
- 如果左括号数多于右括号,继续读取下一行,将内容追加到当前语句,更新括号计数,直到左右括号数量相等。
- 整理当前语句为单行格式,加入结果列表。
- 最后输出所有收集到的完整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
相关产品推荐
相关产品推荐

