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

Python匹配到ExecuteQuery后反向遍历行捕获首个SetSearchExpr实例如何实现

实现思路
  • 缓存历史行:逐行读取文件时,把每一行内容存入一个历史列表,所有已读取的行都会按顺序留存,不需要二次读取文件
  • 反向遍历匹配:每次匹配到ExecuteQuery (时,直接倒序遍历历史列表,第一个命中SetSearchExpr(规则的行就是距离当前ExecuteQuery最近的目标行
  • 结果提取输出:从匹配到的SetSearchExpr行中提取搜索规则内容,按要求格式输出即可,找不到目标行时可自定义提示逻辑
完整实现代码
import sys
import os
import re

# 初始化历史行缓存
history_lines = []
target_pattern = re.compile(r'SetSearchExpr\("(.*?)"\)')

with open("Sample_code.txt", 'r', encoding='utf-8') as file:
    for line in file:
        # 先把当前行加入历史缓存
        history_lines.append(line.strip())
        if "ExecuteQuery (" in line:
            # 反向遍历历史行找第一个匹配的目标
            search_spec = None
            for prev_line in reversed(history_lines):
                match_res = target_pattern.search(prev_line)
                if match_res:
                    search_spec = match_res.group(1)
                    break
            # 输出结果
            if search_spec:
                print(f'ExecuteQuery Search Spec = "{search_spec}"')
            else:
                print("当前ExecuteQuery未匹配到对应的SetSearchExpr配置")
代码说明
  • 用with语法打开文件,自动处理文件关闭,避免资源泄露
  • 历史列表会留存所有已读取的行,适配单文件内多个ExecuteQuery (的场景,每个ExecuteQuery都会匹配自身之前最近的一个SetSearchExpr
  • 用正则匹配提取内容,容错率比纯字符串分割更高,格式不规范的场景下也能正常提取参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:18:02