使用Java中的分隔符拆分复杂的字符串

时间:2015-05-16 00:25:20

标签: java split

我想要使用String.split()分割一个简单的XML行,但它无法正常工作。

(<)position x="1" y="2" z="3" /(>) with no parentesis

这是我试图申请的正则表达式:

String regex ="(<)position x=\"|\" y=\"|\" z=\"|\" /(>)";

预期结果是

  

1 2 3

1 个答案:

答案 0 :(得分:1)

您无法使用split()方法执行此操作。它只会将字符串分成几部分,不会过滤掉各个组。相反,您可以使用PatternMatcher

final String input = "<position x=\"1\" y=\"2\" z=\"3\" />";
final String regex = "<position\\sx=\"([0-9]+)\"\\sy=\"([0-9]+)\"\\sz=\"([0-9]+)\"\\s\\/>";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
    final String x = matcher.group(1);
    final String y = matcher.group(2);
    final String z = matcher.group(3);
    System.out.println(x + " " + y + " " + z);
}

但是,如果您打算解析XML,我会高度建议使用XML解析器。