2010-11-13 6 views
0

J'ai besoin d'une expression régulière qui remplacerait les opérateurs arithmétiques dans une chaîne donnée. Je dois pouvoir remplacer les opérateurs par "|".Expression régulière pour évaluer et remplacer les opérateurs d'opérateurs arithmétiques

par exemple,

String input = "5.0+9.0-(-2.0)"; 

String replace = input.replaceAll("[+-//*&&[^.]&&[^(-]]", "|"); 

dans ce cas je compte que pour remplacer les opérateurs en dehors des supports. Je pense que l'expression régulière doit être modifiée davantage pour ne lire que le "-" en dehors des parenthèses mais je suis censé avoir des idées.

Répondre

0

Cela semble difficile à faire avec une expression régulière. Je pense que le meilleur moyen est d'extraire les expressions entre parenthèses et de remplacer les opérations arithmétiques dans la chaîne restante. Parce que regex ne peut pas gérer les crochets.

Pour aider à l'extraction Regular expression to detect semi-colon terminated C++ for & while loops peut vous aider.

+0

merci pour les gars de conseils ... je l'ai eu de travail – user506574

1

Si vous voulez juste remplacer (et non évaluer) les opérateurs arithmétiques qui ne sont pas entre parenthèses, vous pouvez essayer:

String replace = input.replaceAll("[-+*/](?![^(]*\\))","|"); 

Ideone Link

Questions connexes