正则表达式 \\s*,\\s* 的作用是什么?

36

我想知道这行代码对一个名为 surl 的字符串中包含的 URL 做了什么。

String[] stokens = surl.split("\\s*,\\s*");

假设这是surl = "http://myipaddress:8080/Map/MapServer.html",那么stokens会是什么?


9
在“逗号”处分割,逗号周围可以有0个或多个空格。在您提供的字符串中,不会进行拆分。 - Victor Sorokin
2个回答

55

这个正则表达式 "\\s*,\\s*" 的意思是:

  • \s* 匹配任意数量的空格字符
  • 逗号
  • \s* 匹配任意数量的空格字符

它会在逗号处分割并且忽略逗号两侧的空格。


1
Java正则表达式中的双重转义反斜杠真是让人头疼。 - Thorn G
2
@tom 是的 - 我特别喜欢在正则表达式中编写一个字面意义的反斜杠:\\\\ - Bohemian
\s和\s之间有什么区别? - Lupos
5
@Lupos \s 是表示“空白字符”的正则表达式。在Java中编写一个字面上的反斜杠,您必须使用另一个反斜杠进行转义。因此,在程序中编写\s正则表达式,您必须编写"\\s" - Bohemian

15
  • \s 代表“空白字符”。
  • 它包括 [ \t\n\x0B\f\r]。也就是说:\s 匹配空格( )、制表符(\t)、换行符(\n)、垂直制表符(\x0B,有时也称为\v)、换页符(\f)或回车符(\r)。

\\s*,\\s*

这里说的是零个或多个空白字符出现,然后跟着一个逗号,再然后是零个或多个空白字符的情况。

这些被称为简写表达式。

您可以在此网站找到类似的正则表达式:http://www.regular-expressions.info/shorthand.html


2
Pattern javadoc 表示 \s 的完全匹配是 [ \t\n\x0B\f\r],而不仅仅是 [ \t\r\n\f] - Olivier Grégoire
感谢@OlivierGrégoire。已更新答案。 - SRIDHARAN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接