The more standard approach would probably be to use a plugin to catch the JForm object after the XML has been processed but before it has left the model to make your changes. An example of that function would be like this:
function onContentPrepareForm($form, $data)
{
if (!($form instanceof JForm))
{
$this->_subject->setError('JERROR_NOT_A_FORM');
return false;
}
// Check we are manipulating a valid form.
$name = $form->getName();
if (!in_array($name, array('com_content.article')))
{
return true;
}
$form->loadFile('__PATH_ALTERNATE_XML_FILE__');
return true;
}
loadFile
by default has the $reset
flag set to true, so if there are fields with the same name, it should replace them with the new version. This wouldn't work like a regex, so you would have to define the entire field, not just the new piece. However, it should be easy to maintain your separate file in a place that won't be affected by updates (like in the plugin folder!).
Also, if not obvious, it would be best to make this a content
plugin.