我想用递归拆分字符串。我用刺asd>=123
在第一位的,它的成功测试java的正则表达式匹配
,但在第二个,它进入else条件。
s
可以是 “123> = ASD;”, “123 + 456”, “654 * 123”
boolean SplitString(String s) {
if (s.matches("^\\d+.*")) { // number
parser.Add(s.substring(0, subindex));
if (subindex == s.length())
return true;
returnType = SplitString(s.substring(subindex, s.length()));
return returnType;
} // if
else if (s.matches("^(<|>|<>|:=|=|;|<=|>=|\\+|-|\\*|/.)*")) { // operator
subindex = SplitSign(s);
parser.Add(s.substring(0, subindex));
if (subindex == s.length())
return true;
returnType = SplitString(s.substring(subindex, s.length()));
return returnType;
} // else if
else if (s.matches("^_?\\w+.*")) { // variable
for (int i = 0 ; i < s.length() ; i++) {
if (!Character.isAlphabetic(s.charAt(i)) && !Character.isDigit(s.charAt(i)) && s.charAt(i) != '_') {
subindex = i;
i = s.length(); // break loop
} // if
} // for
parser.Add(s.substring(0, subindex));
if (subindex == s.length())
return true;
returnType = SplitString(s.substring(subindex, s.length()));
return returnType;
} // else if
else { // not above
return false;
} // else
} // SprlitString()
但它没有工作。我错过了什么?
一对括号? – Tunaki
我以前尝试过,但它可以不匹配('^(<=)|(> =)|(<>)|(:=)|(=)|(;)|(<)|(>)|(\ +)|( - ) |(\ *)|(/).*') – James
显示您的代码。 “它不起作用”也不是一个非常明确的问题陈述。 – tnw