我需要一个正则表达式,它可以分成这样的表达式:
(6<=5) || (8+1)^2 >= 3 && 4 == 2
结果应该是这样的列表:
(, 6, <=, 5, ), ||, (, 8, +, 1, ), ^, 2, >=, 3, &&, 4, ==, 2
我做了这个,但它不起作用,它给了我这个结果:
[(, 6, 5, ), (, 8, +, 1, ), ^, 2, 3, 4, 2]
这是正则表达式:
[-]?[0-9]*+([eE][-]?[0-9]+)?|([+-/*///^])|([/(/)])|(>=)|(<=)|(&&)|(==)|(||)
它确实识别数字和算术符号,但它不适用于条件符号(&&、==、||、<=、>=)。
你知道如何纠正吗?
编辑:这是代码:
public void convertToList() {
String regex = "[-]?[0-9]+([eE][-]?[0-9]+)?|([-+/*\\\\^])|([()])|(>=)|(<=)|(&&)|(==)|([|][|])";
Matcher m3 = Pattern.compile(regex).matcher(this.stringExp);
this.arrayExp = new ArrayList<String>(this.stringExp.length());
while (m3.find()) {
this.arrayExp.add(m3.group());
}
}
但即使使用 m.butter 更正的正则表达式它也不起作用(与上述结果相同)
编辑:提供的正则表达式有效,我在输入时犯了一个愚蠢的错误。