我有以下表达式:正则表达式模式匹配一个数学表达式
"3 + 2 * ((1 + 1 - (2 + 4))) + 112 * 31 - ((1+1) - 14 + 1)"
我想与顶层parentesis
例如分割表达式:
String Expression = "3 + 2 * ((1 + 1 - (2 + 4))) + 112 * 31 - ((1+1) - 14 + 1)";
String[] result = Regex.Split(expression, "??");
预期输出:
//result[0] = 3 + 2 *
//result[1] = (1 + 1 - (2 + 4))
//result[2] = + 112 * 31 -
//result[3] = 3 + 2 *
//result[4] = (1+1) - 14 + 1
你最好为此编写一个解析器(或者,最好的,只搜索一个 - 有一个好的已经在那里)。算术就像html - 不是_regular_。 –
什么是“休闲表达”?它只是一个错字,或者这是某种符号? –
我同意Joel的观点,但如果你真的想在正则表达式中做到这一点(如果你正在寻找一个挑战和/或你恨自己) - 你可能会对.NET的平衡模式匹配感兴趣。但正如Joel所说,Lexer/Parser是更好的选择。 – vcsjones