Ok ... J'ai une solution insatisfaisante à un problème.Remplacer des nombres variables d'éléments ... regex?
Le problème est que j'ai entrée comme ceci:
{sup 19}F({sup 3}He,t){sup 19}Ne(p){sup 18}F
et besoin d'une sortie comme ceci:
¹⁹F(³He,t)¹⁹Ne(p)¹⁸F
J'utilise une série de remplacements premier à diviser chacune des sections {sup xx} dans {supx} {sup x}, puis utilisez une regex pour faire correspondre chacun d'entre eux et remplacer les caractères par leurs équivalents uniques UTF-8. Le "problème" est que les {sup} sections peuvent avoir des nombres de 1, 2 ou 3 chiffres (peut-être plus, je ne sais pas), et je veux les "développer" en sections {sup} séparées avec un chiffre chacune . (J'ai aussi le même problème avec {sub} pour ... indices)
Ma solution actuelle ressemble à ceci (en java):
retval = retval.replaceAll("\\{sup ([1-9])([0-9])\\}", "{sup $1}{sup $2}");
retval = retval.replaceAll("\\{sup ([1-9])([0-9])([0-9])\\}", "{sup $1}{sup $2}{sup $3}");
Ma question: est-il possible de le faire en un seul passage, peu importe combien de chiffres (ou au moins un nombre raisonnable) il y a?
Pourquoi avez-vous marqué la partie '{sup' comme optionnelle? On dirait qu'il va correspondre "1}". –
@Mike: l'OP veut remplacer '{sup 123}' par '{sup 1} {sup 2} {sup 3}'. Seul le premier chiffre a '{sup' devant et le dernier chiffre a '}' après: c'est pourquoi c'est facultatif. –
@Mike: ah, je vois ce que tu veux dire. D'où ma remarque "il faut faire attention, ça ne * surpasse pas!". Voyez ma deuxième solution, celle qui contient le '\ G ', ce qui explique cela. –