正则表达式,用于查找任意字符的重复



我有一个很大的PHP代码库,其中有许多这种模式的实例:

$result = $expression? $expression: $alternate;

我想替换为:

$result = $expression ?: $alternate;

这里$expression可以是任何类似$this->system->cache('1234')的东西。它通常以$开头,并且通常没有任何空格。那些少数不以$开头或有空格的,我可以手动检查。

我可以得到一个匹配上面的RegEx,允许可选的空白:

($[^? ]+) *? *($[^: ]+) *:

但这并不能保证第一组和第二组是相同的

有办法匹配这些模式吗?

您可以使用反向引用1——引用到第一个匹配组,即:

($[^? ]+) *? *1 *:

最新更新