作为程序员一定要保持良好的睡眠,才能好编程

PHP正则表达式\s\S的用法说明

发布时间:2017-11-29


在线正则调试工具

http://tool.chinaz.com/regex



正则表达式中/i,/g,/ig,/gi,/m的区别和含义

/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找) 多行合成一行 去匹配
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)



/e 可执行模式,此为PHP专有参数,例如preg_replace函数。  /e模式的作用是将替换串中的内容当作代码来执行




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

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

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

[ace]*

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

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

[\S]表示,非空白就匹配

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

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

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


那么专家再请问一下,为什么我用\s匹配不了换行?只有用[\s\S]才行?
这几天复习没时间。。。让你久等了,等一下我选最佳的时候加分。。



\s无法匹配换行?这不对呀。

我在PHP、JavaScript、C#这三种语言中都使用过该正则,可以匹配。

而且当你说无法匹配后,我还以为我记错了,都测试了一下,是可以匹配的!

你是不是匹配后输出没有处理?

比如在HTML网页中没有看到,如果是这样,因为HTML网页中是不会显示出\r\n或者\n这样的换行的,要查看也只能在源代码中看到,HTML中只能看到<br />这样的换行。