我有一个输入字符串,例如“5 + 3”。 现在我想用正则表达式分割它:
String[] rawTokens = input.split("\\+|\\-|\\*|/|\\d+");
标记数组现在应为[5,+,3],但它是空的。
有什么问题?
答案 0 :(得分:1)
分割您可以使用的字符串:
"\\+|\\*|/|-|\\d+"
或
"\\d+|[+*/-]"
try {
String input = "5+3";
ArrayList<String> list = new ArrayList<String>();
Pattern pattern = Pattern.compile("\\+|\\*|/|-|\\d+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
list.add(matcher.group());
}
String[] rawTokens = list.toArray(new String[0]);
JOptionPane.showMessageDialog(null, rawTokens);
} catch (PatternSyntaxException ex) {
}
答案 1 :(得分:1)
问题是三方面的:
现在,如何解决......
你需要一个不匹配任何输入字符的模式,因为你不想要消耗任何东西。相反,您需要匹配 要提取的术语。你需要环顾四周:
String[] rawTokens = input.split("\\b");
此模式匹配&#34;字边界&#34; (在这种情况下,在非数字和数字之间,反之亦然)。
请参阅生成所需输出的live demo。