【问题标题】:Regular expression to find empty functions正则表达式查找空函数
【发布时间】:2021-06-16 12:45:40
【问题描述】:

我想使用一个只查找 php 文件中为空的函数的正则表达式

例如

function name_not_important()
{
}

【问题讨论】:

  • @VishalSingh 在这里不行,我什至在这个网站上测试过regex101.com/r/6RsBEK/1
  • 您的函数包含单词 test 它不为空。
  • function [a-z]\w*\(\)\s*\{\s*\}
  • @VishalSingh 非常感谢,它成功了,现在我还希望你找到所有这些以 pesq.class.php 结尾的文件中的函数,你能帮帮我吗?跨度>
  • 请注意,如果您使用的是 PhpStorm,您可以使用结构搜索轻松找到空函数(不需要任何正则表达式)。

标签: php regex


【解决方案1】:

正则表达式可以是function\s[^\(]+\([^)]*\)(\n)*{(\n)*}

来自https://regex101.com/:

  • 函数按字面意思匹配字符(区分大小写)\s 匹配任何空白字符(相当于 [\r\n\t\f\v]) 匹配下面列表中不存在的单个字符 [^(]
  • 在一次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪)(匹配 字符(字面意思(区分大小写)(匹配字符( 字面上(区分大小写)匹配一个不存在于 下面列出[^)]
  • 在零次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪))匹配 字符 ) 字面意思(区分大小写) ) 匹配字符 ) 字面上(区分大小写)第一捕获组 (\n)*
  • 在零次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪)重复捕获 group 只会捕获最后一次迭代。放置一个捕获组 围绕重复的组来捕获所有迭代或使用 如果您对数据不感兴趣,则改为非捕获组 \n 匹配换行符(换行符)字符 (ASCII 10) { 匹配 字符 { 字面意思(区分大小写)第二个捕获组 (\n)*
  • 在零次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪)重复捕获 group 只会捕获最后一次迭代。放置一个捕获组 围绕重复的组来捕获所有迭代或使用 如果您对数据不感兴趣,则改为非捕获组 \n 匹配换行符(换行符)字符 (ASCII 10) } 匹配 字符 } 字面意思(区分大小写)全局模式标志 g 修饰符:全局。所有匹配(第一次匹配后不返回) m 修饰符:多行。导致 ^ 和 $ 匹配每个的开始/结束 行(不仅是字符串的开头/结尾)

注意:这个正则表达式假定大括号的缩进是对齐的。

【讨论】:

  • 非常感谢您的解释,现在您能告诉我如何在以 pesq.class.php 结尾的 php 文件中找到所有这些空函数吗?
  • @Yuri007 说我们找到了,你想用它们做什么?
  • 我将替换所有找到的代码,为此我将使用 Visual Studio 代码的替换
  • @Yuri007 好的,您介意将 pesq.class.php 文件转移到其他文件夹然后应用此搜索吗?
  • 这很复杂,因为文件很多,各种文件夹中有数千个
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多