正则表达式 \s*和\s*? 具体有什么区别?求认真解答 thanks

如题所述

一、两种表达方式表达意义的区别:

1、\s代表正则表达式中的一个空白字符(可能是空格、制表符、其他空白)。

2、\\s代表字符\和字符s,因为\在正则中有特殊意义,所有需要转义,写成了\\ 。

二、表达的作用的区别:

1、\s用于匹配空白字符。

2、\\s用于匹配字符串中的\和s,两个字符。

扩展资料:

另外,正则表达式的() [] {}也有不同的意思

1、() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。

2、(\s*)表示连续空格的字符串。

3、[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。

4、{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。

(0-9) 匹配 '0-9' 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)

[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。 

[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。

5、过滤内容里面有数或空格数字

preg_replace("/\d{1,}\s{0,1}/", "xxxxxxxx", $signaturecontent);

参考资料来源:百度百科--正则表达式

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
这本质就是正则表达式的贪婪与非贪婪模式
1、贪婪模式:正则表达式一般趋向于最大长度匹配。
2、非贪婪模式:反之,取最小长度匹配
3、如何区分:在量词(* + ? {m,n})后面加上 ? 号,就是非贪婪模式

由于\s是匹配空格,不好说明,我们用下面的例子来说明:
正则表达式: \d+ 和 \d+?
字符串:asd12sd345
\d+匹配结果:12、345(尽可能多的匹配)
\d+?匹配结果:1、2、3、4、5(匹配最小数量,也就是1个)

那么,同理\s*和\s*?这俩的区别就是:
\s*:匹配0个或多个空格,会尽可能多的匹配
\s*?:匹配最小数量的空格,也就是0个空格本回答被提问者和网友采纳
第2个回答  2016-11-01
明白*和*?的区别就好了
*是贪婪模式,会尽可能匹配更多的字符
而*?是非贪婪模式 会尽量匹配少的字符
例子 假设字符串是121212
\d*2 会匹配到整个字符串 121212

而 \d*?2 会捕获到3个匹配组 分别是 12 12 12
第3个回答  2016-11-01
你这是什么里的正则表达式?
js? 还是别的?
相似回答