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

将字符串拆分为单词和标点符号,但不要拆分内部标点符号

  •  1
  • user1631306  · 技术社区  · 6 年前

    我有一根绳子 There is a boy's puppy. Really? . 我需要找到外部穿孔,并将它们从所附单词中分离出来,并将它们作为另一个单词对待。输出将是:

    • boy's 将是一个单词(内部标点)
    • puppy. 两个字, puppy .
    • Really? 两个字, Really ?

    我使用的代码是基于外部标点分割单词,但我希望它们是单独的单词。

    String[] Res = word.split("[\\p{Punct}\\s]+");
    

    我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Joakim Danielson    6 年前

    您要对Reg-Ex执行的操作是使用非捕获组,使其成为输出的一部分,因此在Reg-Ex中,我有两个组,用或分隔( | )第一个是捕获,第二个是非捕获。我不确定我的非捕获组中是否包含了您想要的所有外部标点符号, (?=X) .

    String word = "There is a boy's puppy. Really?";
    String[] res = word.split("(\\s+)|(?=[\\.\\?])");
    
    for (String s: res ) {
        System.out.print("[" + s + "]");
    } 
    

    输出是

    [有][是][男孩的][小狗][真的][吗?]