为什么 java 中的正则表达式对于不同的示例表现不同?
Why regex in java is behaving differently for different example?
Scanner sc = new Scanner(System.in);
String s = sc.nextLine().trim();
s= s.replaceAll("\++"," + ");
Pattern p = Pattern.compile("[a-zA-Z]+|\d+|[\(\*\)/%]");
Matcher m = p.matcher(s);
while(m.find()){
String str=m.group();
s= s.replace(m.group()," "+str+" ").trim();
}
String[] str=s.split(" +");
for(String s1:str) System.out.print(s1+",");
if s=22*(7-9
输出为:22,*,(,7,-,9,
if s=12*(4-2
输出为:1,2,*,(,4,-,2,
为什么第二个例子中12的数字分开了?
如果有人知道,请帮助我
是因为最后一个表达式中有两个2
。当你得到最后一个 2
时,你在所有 2
周围添加空格,因此它导致 12
被拆分。
Scanner sc = new Scanner(System.in);
String s = sc.nextLine().trim();
s= s.replaceAll("\++"," + ");
Pattern p = Pattern.compile("[a-zA-Z]+|\d+|[\(\*\)/%]");
Matcher m = p.matcher(s);
while(m.find()){
String str=m.group();
s= s.replace(m.group()," "+str+" ").trim();
}
String[] str=s.split(" +");
for(String s1:str) System.out.print(s1+",");
if s=22*(7-9
输出为:22,*,(,7,-,9,
if s=12*(4-2
输出为:1,2,*,(,4,-,2,
为什么第二个例子中12的数字分开了? 如果有人知道,请帮助我
是因为最后一个表达式中有两个2
。当你得到最后一个 2
时,你在所有 2
周围添加空格,因此它导致 12
被拆分。