我正在尝试拆分数学表达式.
String number = "100+500";
String[] split = new String[3];
Run Code Online (Sandbox Code Playgroud)
我要实现
我尝试了这个,但我不知道该怎么写分裂.
split = number.split(????);
Run Code Online (Sandbox Code Playgroud)
您希望在不消耗任何输入的情况下在数字和非数字之间进行拆分...您需要环顾四周:
String[] split = number.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
Run Code Online (Sandbox Code Playgroud)
什么是火车残骸的正则表达式?
它表达了这个答案的最初句子:
(?<=\d)
表示前一个字符是一个数字(?=\D)
表示下一个字符是非数字(?<=\d)(?=\D)
一起将匹配之间的一个数字和一个非数字regexA|regexB
表示regexA 或 regexB匹配,用作上述点,但非数字然后用数字表示反之亦然逻辑重要的一点是环顾四周并不消耗,因此拆分时不会吞噬任何输入.
这是一些测试代码:
String number = "100+500-123/456*789";
String[] split = number.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
System.out.println(Arrays.toString(split));
Run Code Online (Sandbox Code Playgroud)
输出:
[100, +, 500, -, 123, /, 456, *, 789]
Run Code Online (Sandbox Code Playgroud)