Java正则表达式拆分运算符的数学表达式,不包括括号中的运算符
我需要使用下面的正则表达式拆分下面的字符串。但它会分割括号内的数据
Input
T(i-1).XX_1 + XY_8 + T(i-1).YY_2 * ZY_14
Expected Output
T(i-1).XX_1 , XY_8 , T(i-1).YY_2 , ZY_14
不应分割属于“(“和”)”项下的数据
我尝试使用下面的代码,但分割了“(“和”)下面的数据
String[] result = expr.split("[+*/]");
任何指向修复此问题的指针
我不熟悉这个正则表达式
Input
(T(i-1).XX_1 + XY_8) + T(i-1).YY_2 * (ZY_14 + ZY_14)
Output
T(i-1).XX_1 , XY_8 , T(i-1).YY_2 , ZY_14 , ZY_14
如果是T(i-1),则需要忽略
对于下面的表达式,它不起作用
XY_98 + XY_99 +XY_100
String lineExprVal = lineExpr.replaceAll("\\s+","");
String[] result = lineExprVal.split("[+*/-] (?!(^))");
# 1 楼答案
您可以像这样拆分括号外的所有内容:
这将打印:
这个想法很简单,您必须使用不在括号内的分隔符进行拆分
你可以在这里检查这个ideone,你可以在这里检查你的正则表达式Regex demo
编辑
在第二种情况下,必须使用此正则表达式:
这将为您提供:
你可以找到Regex Demo,我从这里的帖子Regex to match only comma's but not inside multiple parentheses中启发了这个解决方案
希望这能帮助你
# 2 楼答案
在第二个数学表达式中拆分如果不可能,则非常困难,因此您必须使用模式,它更有用,因此对于您的表达式,您需要以下正则表达式:
这里有一个Demo regex你会理解得更多
要获得结果,需要循环抛出结果:
这将为您提供: