【发布时间】:2018-03-31 23:42:30
【问题描述】:
我正在尝试为数学运算解析一行代码。
如:4+18/(9-3)
我希望这些部分是:4、+、18、/、(、9、-、3 和 )。 所以基本上,所有的数字、运算符和括号。
如果我使用带有分隔符的拆分,它会在找到分隔符时删除它。因此,如果我使用我的运算符作为分隔符,那么它们就会被删除。
我尝试使用 Regex.split,它包含运算符,但不是我想要的。它产生类似 4+ 的结果,因为它包括 4 和加号。
这是我一直在尝试的:
string convert = "4+8/(9-3)";
string[] parts = Regex.Split(convert, @"(?<=[-+*/])");
【问题讨论】:
-
可以使用正则表达式解析字符串,但不能使用正则表达式解析语法。最好使用数学表达式解析器/求值器。
-
但是,无论如何要回答您的问题,
([\d\.]+|[()e^/%x*+-])应该可以工作。 (example) -
如果您打算只使用整数,
Regex.Split(convert, @"(\D)");。但它不能作为最终解决方案。 -
我不确定,但你想要数字和符号分开吗?