如何在记事本++上使用正则表达式替换 fn() 的所有 php 匿名函数?

How to replace all php anonymous functions for fn() using regex on notepad++?

我正在尝试为 php 7.4 >= 更新遗留 php 代码 (7.0) 以及我想使用新 fn() => 语法而不是 function() use () {}

的新功能之一

不幸的是,我有数百个使用 CakePHP ORM 的匿名函数,例如:

$query->matching('Tags', function ($q) {
    return $q->where(['Tags.name' => 'CakePHP']);
});

使用 php 7.4 >= 可以是:

$query->matching('Tags', fn($q) =>
        $q->where(['Tags.name' => 'CakePHP'])
);

有时使用“使用”:

$query = $articles->find()->matching('Comments.Users', function ($q) use ($username) {
    return $q->where(['username' => $username]);
});

php 7.4 >=(不需要使用):

$query = $articles->find()->matching('Comments.Users', fn ($q) =>
        $q->where(['username' => $username])
    );

或使用两个或更多参数:

$query->where(function (QueryExpression $exp, Query $q) {
    return $exp->eq('published', true);
});

但是当你有多个指令时,fn()不能使用,例如:

$results->map(function ($row) {
        $row['age'] = $row['birth_date']->diff(new \DateTime)->y;
        return $row;
    });

我想使用 notepad++ 正则表达式并替换所有文件功能 来执行正则表达式并将所有“可能的”functions() 替换为 fn()

那么,什么 REGEX 可以实现这个目标?

Find: function\s*\(([^\(\)]*)\)[^\{]*\{\s*return\s*([^;]*)\s*;\s*\}
Replace: fn\(\) =>