我有一个很大的PHP代码库,其中有许多这种模式的实例:
$result = $expression? $expression: $alternate;
我想替换为:
$result = $expression ?: $alternate;
这里$expression
可以是任何类似$this->system->cache('1234')
的东西。它通常以$
开头,并且通常没有任何空格。那些少数不以$
开头或有空格的,我可以手动检查。
我可以得到一个匹配上面的RegEx,允许可选的空白:
($[^? ]+) *? *($[^: ]+) *:
但这并不能保证第一组和第二组是相同的
有办法匹配这些模式吗?
您可以使用反向引用1
——引用到第一个匹配组,即:
($[^? ]+) *? *1 *: