正则表达式
java
String sentence = "The quick brown fox... jumps over the lazy dog?";
String[] words = sentence.split("\\W+"); // \\W+怎么理解?
/*打印words会输出:
The
quick
brown
fox
jumps
over
the
lazy
dog
*/
在 Java 中,使用 split() 方法处理字符串时,这个表达式的作用是寻找并匹配所有"非单词字符"作为拆分的间隔点。
我们可以把这段代码拆解开来看:
\W(大写 W) : 这是一个特殊的元字符,代表"任何非单词字符 "。在正则表达式中,单词字符 通常指的是字母(a-z, A-Z)、数字(0-9)和下划线(_)。因此,\W会匹配空格、标点符号(如...、?、,)、感叹号等任何不是字母或数字的符号。+: 这是一个修饰符,表示"一次或多次 "。它意味着如果连续出现多个非单词字符(比如句子里的...或者空格加标点),程序会将它们看作是一个整体,而不是把每一个符号都拆开。"\\W+"中的双反斜杠\\: 在 Java 字符串中,反斜杠\是转义字符。为了表示正则表达式里的\W,我们需要用另一个反斜杠额外转义一下,所以写成\\W。
举个例子:
如果你有一个句子:"Hello!!!World"
- 当你用
"\\W+"去拆分时:!!!会被识别为一组"非单词字符"。- 程序会以
!!!为界限,将原始字符串拆分成"Hello"和"World"两个部分。
总结逻辑
使用 sentence.split("\\W+") 的逻辑就是:"帮我把这个句子里所有的标点符号、空格等'非单词'的部分全部删掉,并以这些位置为切割点,把句子拆分成一个个纯粹的单词数组。"