Expresiones regulares para seleccionar última expresión en la fórmula matemática a cambio de signo

AndroLife :

Quiero tener una expresión regular que puede detectar última expresión matemática con el fin de cambio de signo de esa expresión, por ejemplo:

5 --> -5

-5 --> 5

5+2*cos(10) --> 5-2*cos(10)

5-cos(10+2) --> 5+cos(10+2)

Todavía no podía crear cualquier expresión regular que puede coincidir con la última expresión. He creado esta expresión regular (\+[(cos|sin|tan)])+(.*[0-9]*.)pero sólo selecciono la última expresión si hay un sen / cos o bronceado.

Robo fregona:

Lo siento por ser (muy) tarde a la fiesta, pero aquí está mi solución:

String str = "5*10/2+cos(54/90)", regex = "(\\+|-)(?=(?:[a-zA-Z]*\\(.*?\\))|[0-9^*/]+$)";
Pattern pat = Pattern.compile(regex);
Matcher m = pat.matcher(str);
String r = "";
if(m.find())
{
    r = m.group(1).equals("+")?"-":"+";
}
str = str.replaceAll(regex, r);
System.out.println(str);

Estoy usando BlueJ como un IDE, por cierto.

He aquí una demostración en vivo: https://regex101.com/r/3EM9Ix/1

EXPLICACIÓN

(\\+|-)selecciona el operador, '+' o deseado '-' (?=(?:[a-zA-Z]*\\(.*?\\))|[0-9^*/]+$)es la expresión regular que comprueba si el operador es seguido por cualquiera de una función que tiene letras en él o sólo algunos más dígitos

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=218055&siteId=1
Recomendado
Clasificación