使用正则表达式str.split(“\\W+“)拆分句子

正则表达式

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() 方法处理字符串时,这个表达式的作用是寻找并匹配所有"非单词字符"作为拆分的间隔点

我们可以把这段代码拆解开来看:

  1. \W (大写 W) : 这是一个特殊的元字符,代表"任何非单词字符 "。在正则表达式中,单词字符 通常指的是字母(a-z, A-Z)、数字(0-9)和下划线(_)。因此,\W 会匹配空格、标点符号(如 ...?,)、感叹号等任何不是字母或数字的符号。
  2. + : 这是一个修饰符,表示"一次或多次 "。它意味着如果连续出现多个非单词字符(比如句子里的 ... 或者空格加标点),程序会将它们看作是一个整体,而不是把每一个符号都拆开。
  3. "\\W+" 中的双反斜杠 \\ : 在 Java 字符串中,反斜杠 \ 是转义字符。为了表示正则表达式里的 \W,我们需要用另一个反斜杠额外转义一下,所以写成 \\W

举个例子:

如果你有一个句子:"Hello!!!World"

  • 当你用 "\\W+" 去拆分时:
    • !!! 会被识别为一组"非单词字符"。
    • 程序会以 !!! 为界限,将原始字符串拆分成 "Hello""World" 两个部分。

总结逻辑

使用 sentence.split("\\W+") 的逻辑就是:"帮我把这个句子里所有的标点符号、空格等'非单词'的部分全部删掉,并以这些位置为切割点,把句子拆分成一个个纯粹的单词数组。"

相关推荐
en.en..几秒前
Linux mmap 内存映射深度解析:基于帧缓冲 /dev/fb0
java·服务器·前端
洋不写bug2 分钟前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
后台模板学习6 分钟前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
秋名RG8 分钟前
2026/6/15 系统故障复盘与整改方案
java·架构
今天要早睡_10 分钟前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
南讯股份Nascent14 分钟前
2026年CRM技术选型观察:当“数据打通“成为第一需求,电商CRM的架构价值在哪里
java·大数据·用户运营
心易行者19 分钟前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
霸道流氓气质1 小时前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗1 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
学长毕业设计1 小时前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端