java中的split
2.split("\s")以碰到的每个空格、换行符、回车为分隔线,如遇到连续多个空格、换行符、回车就会连续划分,分隔后返回字符数组;
3.split("\s+")以空格、换行符、回车为分隔线,相邻的多个空格、换行符、回车仍然视为只有一个,分隔后返回字符数组。
而 "\\s*,\\s*" 的含义:
\\s*表示匹配 0 个或多个空白字符(空格、制表符等),表示匹配逗号本身- 整个表达式的意思是:匹配「任意个空白字符 + 逗号 + 任意个空白字符」的组合
在正则表达式中,\s 和 \\s 的区别与使用场景有关,核心是 转义字符的处理:
\s是正则表达式本身的语法,表示匹配任意空白字符(空格、制表符\t、换行符\n等)。仅在 纯正则表达式环境 中使用(例如命令行工具、文本编辑器的正则替换功能)。\\s是在 编程语言的字符串中 表示\s的写法。因为在多数编程语言(如 Java、JavaScript、Python 等)中,字符串里的\是转义字符,需要用\\表示一个实际的\。例如在 Java 代码中,"\\s"作为字符串传递给正则相关方法时,会被解析为正则表达式\s。
简单说:
- 直接写正则表达式时用
\s - 在编程语言的字符串中表示正则的
\s时,要用\\s
举例:
- 文本编辑器中用正则查找空白字符,直接写
\s - Java 代码中分割空白字符:
str.split("\\s") - JavaScript 中匹配空白字符:
str.match(/\s/)(JS 中正则表达式直接量用/包裹,无需额外转义)
而\s+ 和 \s* 的区别在于匹配空白字符的数量要求:
\s*- 表示匹配 0 个或多个 连续的空白字符(空格、制表符、换行符等)
- 注意:"0 个" 意味着即使没有空白字符也能匹配成功
- 示例:
- 对于字符串
"a,,b",用\s*,\s*分割会得到["a", "", "b"](中间的两个逗号之间没有空白,仍能匹配) - 能匹配空字符串、单个空格、多个空格、制表符等各种情况
- 对于字符串
\s+- 表示匹配 1 个或多个 连续的空白字符
- 要求至少有一个空白字符才能匹配成功
- 示例:
- 对于字符串
"a b"(中间两个空格),\s+可以匹配这两个空格 - 对于字符串
"ab"(没有空白),\s+无法匹配
- 对于字符串
