Trier d'une solution indirecte, mais dans certaines langues, vous pouvez utiliser un callback function pour le Rempl ciment. Vous pouvez ensuite parcourir les options de cette fonction. Cela fonctionnerait également avec plus de deux options. Par exemple, en Python:
>>> text = "This is an $example$ of what I want, $ 1+1=2 $ and $ 2+2=4$."
>>> options = itertools.cycle(["(", ")"])
>>> re.sub(r"\$", lambda m: next(options), text)
'This is an (example) of what I want, (1+1=2) and (2+2=4).'
Ou, si ceux qui apparaissent toujours par paires, comme il semble être le cas dans votre exemple, vous pouvez correspondre à la fois $
et tout le reste, puis remplacer le $
et la réutilisation la substance entre en utilisant une référence de groupe \1
; mais encore une fois, toutes les langues prennent en charge les:
>>> re.sub(r"\$(.*?)\$", r"(\1)", text)
'This is an (example) of what I want, (1+1=2) and (2+2=4).'
Non. Regex permet de rechercher des motifs (un ou plusieurs avec le drapeau global) et non la énième occurrence d'un caractère. Vous devez spécifier l'environnement pour appliquer une regex utile ici (par exemple, chaque '$' directement avant/après un nombre). Il vaut mieux utiliser simplement une fonction d'index pour trouver tous les indices où un certain caractère est. –
S'il vous plaît ajouter un tag de langue. –