^出现在开头表示字符边界,在中括号开头表示非,在其它地方就表示字符^
正则表达式的() [] {}有不同的意思。
()是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。(\s*)表示连续空格的字符串。[]是定义匹配的字符范围。比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。{}一般用来表示匹配的长度,比如\s{3}表示匹配三个空格,\s[1,3]表示匹配一到三个空格。(0-9)匹配 '0-9′ 本身。[0-9]*匹配数字(注意后面有*,可以为空)[0-9]+匹配数字(注意后面有+,不可以为空){1-9}写法错误。[0-9]{0,9}表示长度为 0 到 9 的数字字符串。
正则表达式:非贪婪式匹配
有时候我们使用正则表达式只希望尽可能少的匹配。
比如在对html文件进行正则匹配时:
<span>a</span><span>b</span>
如果我们使用.*匹配
<span>.*</span>
匹配结果是
<span>a</span><span>b</span>
很明显不能满足我们的需求。
这时候我们就需要使用非贪婪式匹配,也可以称为懒惰匹配
懒惰匹配与贪婪匹配的差别就是在贪婪匹配的后面加个?号
同样对上面的html进行匹配,我们使用.*?
匹配结果是
<span>a</span>
和我们预期效果一样。
除了.*?这种匹配方式,非贪婪式匹配还包括:
.+? 匹配一次
.?? 不匹配
.{m,n}? 匹配m次
本文详细解析了正则表达式的各种元素,包括特殊字符、元字符、字符集、重复符等,以及如何使用非贪婪匹配来精确控制匹配的长度。
6083

被折叠的 条评论
为什么被折叠?



