我知道有很多关于此问题的主题,但是我尝试使用正则表达式//W+
,它并不像我期望的那样工作。
我参加了Java课程,而且我有一长串文字,这实际上是莎士比亚戏剧的一部分。因此,它有许多标点符号,空格,换行符等。
练习的解释告诉我使用message.split("//W+")
来分割它并接收一个数组,每个字段包含一个单词。
但它不适合我。如果我使用message.split(" ")
,这个练习似乎适用于另一个正则表达式。我得到的字段用空格分隔,但很多单词由\n
加入或最后有!
。
这是我的代码,文字很短:
public void testSplit(){
String message = ("This is the message to split!");
String[] splitMsg= message.split("//W+");
for (int k=0; k<splitMsg.length;k++){
System.out.println(splitMsg[k]);
}
}
输出是字符串This is the message to split!
谢谢!
答案 0 :(得分:2)
这是因为转义是\\
而不是//
。
更新:尝试使用此工具Regexr测试您的样本。你会看到它与\ w +一起使用,但是这个表达式只是检查单词,不会包含惊叹号。
答案 1 :(得分:1)
您将错误的正则表达式参数传递给split函数。 \ W +应为// W +
public void testSplit(){
String message = ("This is the message to split!");
String[] splitMsg= message.split("//W+");
for (int k=0; k<splitMsg.length;k++){
System.out.println(splitMsg[k]);
}
}