我有一个简单的算术表达式,其中包含整数,括号和+-* /。像这样:
((1+33)()(4+(3-5)))
我需要做的就是将此表达式拆分为如下形式string[]
:
{(, (, 1, +, 33, ), (, ), (, 4, +, (, 3, -, 5, ), ), )}
我正在尝试Regex
上课
public string[] SplitString(string str)
{
return Regex.Split(str, "(?<=[()-+*/])|(?=[()-+*/])");
}
但是输出数据不太正确:
{(, (, 1, +, 33, ), (, ), (, 4, +, (, **3-5**, ), ), )}
如果要匹配破折号,则它必须位于正则表达式中字符类的第一个或最后一个位置:
(?<=[()+*/-])|(?=[()+*/-])
// ^ ^
否则,它将被解释为字符范围-在您的情况下为从)
到*
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句