C#公式的拆分字符串表示法
我不熟悉使用正则表达式,在解析字符串时遇到问题。我正在使用正则表达式解析作为字符串给出的公式 目前我的正则表达式是:C#公式的拆分字符串表示法,c#,regex,C#,Regex,我不熟悉使用正则表达式,在解析字符串时遇到问题。我正在使用正则表达式解析作为字符串给出的公式 目前我的正则表达式是: string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|(-)|(\\+)|(\\*)|(/)|(\\s+)") 此正则表达式无法处理的测试用例之一是公式具有指数时 例如: Formula = "1e-2 + 5.0" 我期望的输出是 ["1e-2", "+", "5.0"] 但是我越来越 ["1e"
string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|(-)|(\\+)|(\\*)|(/)|(\\s+)")
此正则表达式无法处理的测试用例之一是公式具有指数时
例如:
Formula = "1e-2 + 5.0"
我期望的输出是
["1e-2", "+", "5.0"]
但是我越来越
["1e", "-", "2", "+", "5.0"].
我尝试更改正则表达式以确保负号前面的字符不是e:
string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|((^e)-)|(\\+)|(\\*)|(/)|(\\s+)")
当表达式为
Formula = "5+5-2"
它将给出以下输出:
["5", "+", "5-2"]
当我想要的输出是
["5", "+", "5", "-", "2"]
提前感谢您的帮助 您可以使用lookback
Regex.Split(formula, @"(\(|\)|(?<!e|E)-|(?<!e|E)\+|\*|/|\s+)")
-------- --------
Regex.Split(公式,@“(\(\))(?您可以使用lookback
Regex.Split(formula, @"(\(|\)|(?<!e|E)-|(?<!e|E)\+|\*|/|\s+)")
-------- --------
Regex.Split(公式,@“(\(|\)|)(?还可以阅读贪婪()和非贪婪(?)也可以阅读贪婪()和非贪婪(?)