我正在尝试使用正则表达式从字符串中获取运算符,但是当运算符数字包含小数点时,它会被添加到运算符中。
如何将其从运营商中排除?
例如。我有一个带有这个数学表达式的字符串。
5 + 8 - 然后应该从字符串中提取+运算符。
5.2 + 8 - 然后应该提取+运算符,但现在我也得到小数点。
小数点数也可以在第二个操作数中。
String[] operators = expression.replaceAll("^\\d+", "").split("\\d+");
答案 0 :(得分:-3)
首先,我不确定您是否需要^
运算符。
其次,如果您要删除字符串中的所有数字,我不确定您打算如何按字母数字拆分字符串。
我想你可能只想拆分而不是使用这段代码替换和拆分:
String[] operators = expression.split("\\s+?\\d+(\\.\\d+)?\\s+?")
这将删除所有数字和周围空格(如果有)。
或者,你可以考虑使用一种接受你想要的方法而不是消除你不想要的东西。
Pattern p = Pattern.compile("[\\/\\+\\-\\*]"); //plus whatever other operators you want to support