代码之家  ›  专栏  ›  技术社区  ›  Alan

带regex的字符串拆分不返回值

  •  0
  • Alan  · 技术社区  · 7 年前

    我是新来的 正则表达式 而且很困惑为什么没有一个小组被 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

    问题: 原因是什么?我怎样才能得到 Your Name 是否在数组中返回?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Denys Séguret    7 年前

    你不想分开,只想用 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]
    

    小贴士:我已经让第一组人无法捕捉 ?: 因为你不需要得到结果。