用正则表达式拆分字符串不返回任何值

时间:2019-01-10 16:01:28

标签: java regex split

我是 Regex 的新手,非常困惑为什么在以下操作中split方法没有返回任何组:

String toSplit ="FN:Your Name";
String splitted [] = toSplit.split("(FN:)([A-Za-z]*) ([A-Za-z]*)");
System.out.println("Length: "+splitted.length);

输出: Length: 0

问题:是什么原因,如何获得数组中的YourName返回?

1 个答案:

答案 0 :(得分:1)

您不想拆分,而是使用Matcher

String toSplit ="FN:Your Name";
Pattern pattern = Pattern.compile("(?:FN:)([A-Za-z]*) ([A-Za-z]*)");
Matcher matcher = pattern.matcher(toSplit);
if (matcher.find()) {
    String[] splitted = new String[]{
        matcher.group(1),
        matcher.group(2)
    };
    System.out.println("splitted: " + Arrays.toString(splitted));
}

结果:

splitted: [Your, Name]

请注意:我已使第一组无法使用?:捕获,因为您无需在结果中获取它。