Ruby encuentra una expresión matemática completa en una cadena usando RegEx [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Expresión regular para unir dígitos y operadores matemáticos básicos 7 respuestasEstoy tratando de escribir un programa que tome una cadena y use RegEx para buscar ciertas expresiones matemáticas, como 1 * 3 + 4 / 2. Solo los operadores a buscar son [- * + /].
hasta aquí:
string = "something something nothing 1/ 2 * 3 nothing hello world"
a = /\d+\s*[\+ \* \/ -]\s*\d+/
puts a.match(string)
produce:
1/ 2
Quiero tomar toda la ecuación 1/2 * 3. Soy esencialmente nuevo en el mundo de las expresiones regulares, por lo que cualquier ayuda será apreciada.
Nueva información:
a = /\s*-?\d+(?:\s*[-\+\*\/]\s*\d+)+/
Gracias a zx81 por su respuesta. Tuve que modificarlo para poder trabajar. Por alguna razón, ^ y $ no producen ningún resultado, o tal vez un resultado nulo, para a.match (string). Además, ciertos operadores necesitan un \ antes de ellos.
Versión para trabajar con paréntesis:
a = /\(* \s* \d+ \s* (( [-\+\*\/] \s* \d+ \)* \s* ) | ( [-\+\*\/] \s* \(* \s* \d+ \s* ))+/