If you ever need to pick out SQL placeholders, this pattern will do it:
(?x)
(
(['"`]) ((?!\\g2).)+ \\g2(*SKIP)
| \\?\\d*
|\\$\\d+
)(?<=[^"'`])
So, for example, if you have 'somebody?' = ?
, this pattern will ignore the quoted “?” and match only the unquoted one.
It will also work if the placeholder is in the form of “?1” or “$1”.