正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?
一般情况下,正则表达式中的 [a-z]
表示从 a 到 z 之间的任意一个,但是想要匹配所有字符就必须使用 [\s\S]*
,难道和前面的介绍的不一样不是范围描述符。
其实 [\s\S]*
是完全通配的意思,\s
是指空白,包括空格、换行、Tab 缩进等所有的空白,而 \S
刚好相反
这样一正一反下来,就表示所有的字符,完全的、一字不漏的。
另外 []
这个符号,表示在它里面包含的单个字符不限顺序的出现,比如下面的正则:
[ace]*
这表示,只要出现 a/c/e
这三个任意的字母,都会被匹配
[\s]
表示,只要出现空白就匹配[\S]
表示,非空白就匹配
那么它们的组合,表示所有的都匹配,与它相对应的,有 [\w\W]
等,意义完全相同、
另外要说的一点是,为什么有 .
这个通配符了,还要这样的用法。
其实,[\s\S] [\w\W]
这样的用法,比较 .
所匹配的还要多,因为 .
是不会匹配换行的,所有出现有换行匹配的时候,人们就习惯使用 [\s\S]
或者 [\w\W]
这样的完全通配模式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论