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

如何在正则表达式匹配结果中执行二次正则检索?

正则匹配结果的二次检索方案

当然可以在第一次正则的匹配结果中再次执行正则检索,两种实用思路如下:

1. 分步处理

  • 先用第一个正则提取目标片段:
    (?i)((function|procedure)+(.+?(?=stdcall)))
    
    这段正则会抓取所有带stdcall的函数/过程定义前缀部分。
  • 对每一段提取出的内容,用第二个正则匹配筛选:
    (.+?(?=((\s)|(\:))String))
    
    只保留包含String(排除AnsiString这类变体)的片段。

2. 合并正则,一次性匹配

把两个条件整合到一个正则里,直接定位符合要求的完整定义,无需分步处理:

(?i)(function|procedure).+?(?<!Ansi)String.+?stdcall

正则逻辑说明

  • (?i):忽略大小写匹配
  • (function|procedure):匹配函数或过程关键字
  • .+?(?<!Ansi)String:匹配到String,且前面不能是Ansi(避免误匹配AnsiString)
  • .+?stdcall:确保代码片段包含stdcall关键字

匹配效果

  • 成功匹配的目标代码:
    Function Test(aTest: String; const aPluginCall: TObject): integer; stdcall; export;
    
  • 会被跳过的代码:
    Function Test(aTest: AnsiString; const aPluginCall: TObject): integer; stdcall; export;
    
    Function Test: integer; stdcall; export;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:51:16