正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?
一般情况下,正则表达式中的 [a-z] 表示从 a 到 z 之间的任意一个,但是想要匹配所有字符就必须使用 [\s\S]* ,难道和前面的介绍的不一样不是范围描述符。
![正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?](/wp-content/uploads/aaacj/20211221wenjian/zcaqhwtxbd33950.jpg)
其实 [\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
