我想根据几个操作数拆分字符串。
例如
字符串: a&&(b || c)
ANS:String [] {a,&&,(,||,c,)}
是否可以使用Java RegEx?如果是,那么如何?
我尝试使用 [&& ||()] regEx,但它没有提供所需的输出。甚至我不确定如何保留运营商。
修改 如果我们有&和|而不是&&和|| ?
答案 0 :(得分:4)
你可以分开:
(?<![&|])(?=[&|])|(?<=[&|])(?![&|])
(?<![&|])(?=[&|])
表示“任何 inter-char 不前面有&
或|
但 后跟&
或|
“; (?<=[&|])(?![&|])
表示“ <的任何 inter-char ,&
或|
之后 strong>不后跟&
或|
“。例如:
String pattern = "(?<![&|])(?=[&|])|(?<=[&|])(?![&|])";
String input = "a&&(b||c)";
String[] array = input.split(pattern);
System.out.println(Arrays.asList(array));
打印:
[a, &&, (b, ||, c)]
答案 1 :(得分:0)
您需要提供“操作数”列表,例如:
[0-9]|[a-z]|[A-Z]|\|\||&&|\(|\)
每个非转义的|
都定义了新的操作数。您需要通过添加\
来转义一些作为关键字的操作数。
然后您需要使用find
的{{1}}。得到每个操作数。