次のような式をトークンに分割できる正規表現が必要です。
(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 によって修正された正規表現を使用しても機能しません (上記と同じ結果)。
編集:提供された正規表現は機能します。入力で愚かな間違いを犯しました。