通过在单词中保留“ - ”来拆分字符串,同时在Java中的其他位置消除它

时间:2016-07-06 11:46:43

标签: java regex string split

我想将此字符串str = "hello, ,, one-word. yes - no: yea?"拆分为

String[] parts = [hello, one-word, yes, no, yea]

到目前为止,我使用str.split("(\\p{Punct}*\\s)+"))提供parts = [hello, one, word, yes, no, yea]str.split("[\\p{Punct}&&[^-]]*\\s"))提供parts = [hello, one, -, word, yes, -, no, yea]

如何拆分str,保留-_字样,但在其他地方删除它们和其他正则表达式?我还想消除多个标点符号和空格的情况,例如., , ,

3 个答案:

答案 0 :(得分:4)

您可以在Java中使用此正则表达式split

"\\s+-\\s+|(?:(?!-)[\\s\\p{Punct}])+"

RegEx Demo

Code Demo

答案 1 :(得分:2)

    String str = "hello, ,, one-word. yes - no: yea?";

    System.out.println(Arrays.toString(
        str.split("(\\p{Punct}(?!\\w)|\\s)+")
    ));

这将为您提供[hello, one-word, yes, no, yea]

答案 2 :(得分:1)

您可以使用以下正则表达式找到所有单词,而不是拆分字符串:

"(?=\w)[-\w]+"