I have a large PHP codebase with many instances of this pattern:
$result = $expression? $expression: $alternate;
Which I want to replace with:
$result = $expression ?: $alternate;
Here $expression can be anything like $this->system->cache('1234'). It will usually start with $, and usually not have any spaces in it. Those few that don't start with $ or have spaces, I can review manually.
I can get a RegEx to match the above, allowing for optional whitespace:
(\$[^? ]+) *\? *(\$[^: ]+) *:
But this won't guarantee that group 1 and group 2 are the same.
Is there a way to match these patterns?
You can use backreference
\1-- reference to the first matching group, i.e.: