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

如何修正正则表达式以匹配代码中所有print函数调用?

修正思路与正则表达式方案

你的原正则表达式(print(\.*))存在两个核心问题:

  1. 仅匹配print后跟随0个或多个点的情况,完全没有覆盖Python函数调用的括号结构;
  2. 未设置单词边界,无法区分独立的print和do_print这类包含print子串的标识符。

符合需求的正则表达式

要匹配所有独立的print()函数调用(包括你提到的第1、2、4个目标),可以使用:

\bprint\s*\([^)]*\)

正则各部分解释

  • \bprint\b:通过单词边界\b确保匹配的是独立的print标识符,避免误匹配do_print这类字符串中的print子串;
  • \s*:匹配print与左括号之间的任意空白字符(兼容print ("abc")这类带空格的写法);
  • \([^)]*\):匹配从左括号(到对应右括号)的所有内容,[^)]*表示匹配除右括号外的任意字符(如果需要兼容参数内包含转义右括号的极端场景,可以改用更严谨的写法:\bprint\s*\((?:[^()"']|["'].*?["'])*\))。

匹配效果验证

在你提供的代码片段中,该正则会精准匹配:

  1. print("abc")
  2. print()
  3. 三引号字符串内的print()
    而do_print()会被排除在外,完全符合你的需求。

进阶说明

如果你的需求是仅删除实际执行的print函数调用,不删除字符串字面量中的print,那么正则表达式很难完美处理(因为Python的字符串格式复杂,包含单/双/三引号、转义字符等),这种场景更推荐使用Python的AST语法树解析工具来识别代码中的函数调用节点,避免正则的局限性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:27