正则表达式用于匹配特定字符与之间和之前和之后的空格

时间:2013-04-17 14:23:00

标签: java regex

所以我一直在网上搜索4个多小时的线索,告诉我如何做到这一点,但我找不到办法去做我想要的一切。 我想要的是输入这个(例如):

  word1 !  ?? word2 word3 ..   .. word4, word5, word6 !?. word7 !! !
word8 word9 ?
. word10

然后按任意顺序匹配.!?以及介于两者之间的任何空格,以便它返回给我:

["word1", "word2 word3", "word4, word5, word6", "word7", "word8 word9", "word10"]

值得一提的是,我希望将String.split()用于此目的,但任何其他更有效/更简单的方式都会非常受欢迎!

2 个答案:

答案 0 :(得分:4)

你可以试试这种方式

String data="word1 !  ?? word2 word3 ..   .. word4, word5, word6 !?. word7 !! !" +
        "word8 word9 ?" +
        ". word10";
for (String s:data.split("\\s*([!?.]+\\s*)+")){
    System.out.println(s);
}

输出

word1
word2 word3
word4, word5, word6
word7
word8 word9
word10

答案 1 :(得分:2)

    String s = "word1 !  ?? word2 word3 ..   .. word4, word5, word6 !?. word7 !! ! \n word8 word9 ?\n. word10";
    String[] a = s.split("(\\s*[!?.\n\r]+\\s*)+");
    System.out.println(Arrays.toString(a));

输出

[word1, word2 word3, word4, word5, word6, word7, word8 word9, word10]