【发布时间】:2013-06-11 10:46:13
【问题描述】:
我需要一个正则表达式,可以将这样的表达式划分为标记:
(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 更正的正则表达式,它也不起作用(与上面的结果相同)
编辑:提供的正则表达式有效,我在输入时犯了一个愚蠢的错误。
【问题讨论】:
-
您在哪种语言或环境中使用它?
-
始终将此信息包含在与正则表达式相关的问题中。
标签: java regex expression