Expressões regulares são a ferramenta errada para o trabalho. Veja esta famosa diatribe sobre o assunto: link
A ferramenta certa para o trabalho é a linguagem de transformação XML XSLT. O XSLT 2.0 pode usar expressões regulares para manipular o conteúdo de nós individuais, mas usa um analisador XML adequado para entender a marcação. Aqui está uma regra de transformação que você pode incluir no seu XSLT para esta tarefa:
<xsl:template match="date
[preceding-sibling::key[1]='Date Added']
[preceding-sibling::key[2]='Date Modified']
[starts-with(preceding-sibling::date[1],'2014-09-09')]">
<date>
<xsl:value-of select="concat(substring(.,1, 8), '??', substring(, 11))"/>
</date>
</xsl:template>
(O motivo pelo qual o padrão de correspondência é tão complexo é porque o XML é tão mal estruturado. Não há um elemento de wrapper que conecte uma chave e uma data, e nenhum que conecte os dois elementos principais).