我想根据几个操作数拆分字符串。
例如字符串:a&&(b||c)
答:字符串[] {a,&&,(,||,c,)}
java RegEx可以吗?如果是,那怎么办?
我尝试使用[&&||()] regEx ,但它没有提供所需的输出。甚至我也不确定如何留住运营商。
编辑: 如果我们有 & 和 | 而不是 && 和 || ?
我想根据几个操作数拆分字符串。
例如字符串:a&&(b||c)
答:字符串[] {a,&&,(,||,c,)}
java RegEx可以吗?如果是,那怎么办?
我尝试使用[&&||()] regEx ,但它没有提供所需的输出。甚至我也不确定如何留住运营商。
编辑: 如果我们有 & 和 | 而不是 && 和 || ?
您可以按以下方式拆分:
(?<![&|])(?=[&|])|(?<=[&|])(?![&|])
(?<![&|])(?=[&|])
表示“任何前面没有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)]
您需要提供“操作数”列表,例如:
[0-9]|[a-z]|[A-Z]|\|\||&&|\(|\)
每个非转义|
定义新的操作数。您需要通过添加来转义一些作为关键字的操作数\
。
然后你需要使用find
. java.util.regex.Matcher
获取每个操作数。