正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?

一般情况下,正则表达式中的 [a-z] 表示从 a 到 z 之间的任意一个,但是想要匹配所有字符就必须使用 [\s\S]* ,难道和前面的介绍的不一样不是范围描述符。

正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?

其实 [\s\S]* 是完全通配的意思,\s 是指空白,包括空格、换行、Tab 缩进等所有的空白,而 \S 刚好相反

这样一正一反下来,就表示所有的字符,完全的、一字不漏的。

另外 [] 这个符号,表示在它里面包含的单个字符不限顺序的出现,比如下面的正则:

[ace]*

这表示,只要出现 a/c/e 这三个任意的字母,都会被匹配

  • [\s] 表示,只要出现空白就匹配
  • [\S] 表示,非空白就匹配

那么它们的组合,表示所有的都匹配,与它相对应的,有 [\w\W] 等,意义完全相同、

另外要说的一点是,为什么有 . 这个通配符了,还要这样的用法。

其实,[\s\S] [\w\W] 这样的用法,比较 . 所匹配的还要多,因为 . 是不会匹配换行的,所有出现有换行匹配的时候,人们就习惯使用 [\s\S] 或者 [\w\W] 这样的完全通配模式。

以上是 正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗? 的全部内容, 来源链接: utcz.com/p/232138.html

回到顶部