es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, regex, strings y replace, sugiero utilizar el siguiente patrón regex para lograr el resultado deseado:

    String inputInfix = input.replaceAll("\\B|(?<!/)\\d|(?<!\\()\\+|(?<!\\()\\-|(?<=\\d)(?!=/)\\b", " $0 ");

    Este patrón regex encontrará cada carácter en el string excepto la barra diagonal (/), los dígitos, los signos de suma (+) y resta (-) que no estén precedidos por paréntesis, y los espacios que ya estén presentes. Los reemplazará con el mismo carácter rodeado por espacios a ambos lados.

    Por ejemplo, utilizando este patrón, el string “(1+2) / 2” se convertirá en “( 1 + 2 ) / 2”.

    La explicación del patrón regex es la siguiente:
    – “\B” coincidirá con cada posición que no sea un límite de palabra, esto se utiliza para reemplazar los espacios que ya están presentes en el string.
    – “(?<!/)\d” coincidirá con cada dígito que no esté precedido por una barra diagonal, esto se utiliza para reemplazar los dígitos que están junto a la barra diagonal.
    – “(?<!\()\+” coincidirá con cada signo de suma que no esté precedido por un paréntesis izquierdo, esto se utiliza para reemplazar los signos de suma que no están dentro de paréntesis.
    – “(?<!\()\-” coincidirá con cada signo de resta que no esté precedido por un paréntesis izquierdo, esto se utiliza para reemplazar los signos de resta que no están dentro de paréntesis.
    – “(?<=\d)(?!=/)\b” coincidirá con cada límite de palabra que no esté seguido por una barra diagonal y que esté precedido por un dígito, esto se utiliza para reemplazar los límites de palabra que separan dígitos de otros caracteres.

    Nota: El “$0” en el string de reemplazo utilizará el carácter coincidente del patrón regex.

Comments are closed.