0

我想根据几个操作数拆分字符串。

例如字符串:a&&(b||c)

答:字符串[] {a,&&,(,||,c,)}

java RegEx可以吗?如果是,那怎么办?

我尝试使用[&&||()] regEx ,但它没有提供所需的输出。甚至我也不确定如何留住运营商。

编辑: 如果我们有 & 和 | 而不是 && 和 || ?

4

2 回答 2

4

您可以按以下方式拆分:

(?<![&|])(?=[&|])|(?<=[&|])(?![&|])
  • (?<![&|])(?=[&|])表示“任何前面没有or但后面跟着or的字符间”;&|&|
  • 相反,意思是(?<=[&|])(?![&|])“任何前面有or但后面没有or字符间”。&|&|

例如:

String pattern = "(?<![&|])(?=[&|])|(?<=[&|])(?![&|])";
String input = "a&&(b||c)";
String[] array = input.split(pattern);
System.out.println(Arrays.asList(array));

印刷:

[a, &&, (b, ||, c)]
于 2013-06-14T09:47:05.893 回答
0

您需要提供“操作数”列表,例如:

[0-9]|[a-z]|[A-Z]|\|\||&&|\(|\)

每个非转义|定义新的操作数。您需要通过添加来转义一些作为关键字的操作数\

然后你需要使用find. java.util.regex.Matcher获取每个操作数。

于 2013-06-14T09:30:28.340 回答