【发布时间】:2020-09-02 17:16:53
【问题描述】:
我需要一些可以像这样拆分表达式的东西:
string expression = "2e^{x^{2}+2}+x-x^{2}";
我想像这样保护列表中的条款:
0: 2e^{x^2}+2}
1: +
2: x
3: -
4: x^{2}
目前我是这样分裂的:
var Terms = Regex.Split(PolynomString, @"\s*([-+/*])\s*").Where(n => !string.IsNullOrEmpty(n)).ToList();
但这会将我的术语也分成我不想要的指数:
0: 2e^{x^{2}
1: +
2: 2}
3: +
4: x
5: -
6:x^{2}
【问题讨论】:
-
"...like this:" 是有问题的。读者可以建议您如何以您想要的方式拆分该特定字符串,但该解决方案可能不适用于您可能希望拆分的其他字符串,例如
"2e^{x^{2}+{e^{2}+1}}+x-x^{2}"。顺便说一句,人们通常在这样的表达式中看到括号而不是大括号。 -
试试
\w+(\^\{(?>[^{}]+|(?<o>{)|(?<-o>}))*})?|[+-] -
@WiktorStribiżew 这行得通,但这只能用 e^ 保护条款
-
当然,您问“可以像这样拆分表达式的东西”。如果您需要更多帮助,请详细说明您需要什么。
标签: c# regex string list split