<分区>
我正在尝试编写一个程序,它将接受一个字符串并使用 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) 产生任何输出,或者可能是 nil 输出。此外,某些运算符之前需要一个\。
使用括号的版本:
a = /\(* \s* \d+ \s* (( [-\+\*\/] \s* \d+ \)* \s* ) | ( [-\+\*\/] \s* \(* \s* \d+ \s* ))+/