Ruby находит целое математическое выражение в строке, используя RegEx [duplicate]
На этот вопрос уже есть ответ здесь:
Регулярное выражение для сопоставления цифр и основных математических операторов 7 ответовЯ пытаюсь написать программу, которая будет принимать строку и использовать RegEx для поиска определенных математических выражений, таких как 1 * 3 + 4 / 2. Только операторы, которые нужно искать, это [- * + /].
до сих пор:
string = "something something nothing 1/ 2 * 3 nothing hello world"
a = /\d+\s*[\+ \* \/ -]\s*\d+/
puts a.match(string)
производит:
1/ 2
Я хочу взять все уравнение 1/2 * 3. Я совершенно новичок в мире регулярных выражений, поэтому любая помощь будет оценена по достоинству!
Новая информация:
a = /\s*-?\d+(?:\s*[-\+\*\/]\s*\d+)+/
Спасибо zx81 за его ответ. Я должен был изменить это, чтобы работать. По какой-то причине ^ и $ не производят никакого вывода или, возможно, нулевого вывода для a.match (string). Кроме того, некоторые операторы должны \ перед ними.
Версия для работы с круглыми скобками:
a = /\(* \s* \d+ \s* (( [-\+\*\/] \s* \d+ \)* \s* ) | ( [-\+\*\/] \s* \(* \s* \d+ \s* ))+/