Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#公式的拆分字符串表示法_C#_Regex - Fatal编程技术网

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(公式,@“(\(|\)|)(?还可以阅读贪婪()和非贪婪(?)也可以阅读贪婪()和非贪婪(?)