第二章 模式匹配
\s匹配空白符,即空格,制表符\t,换行符\n,回车符\r
- .? 0个或1个
- .* 零个或多个字符
- .+ 一个或多个字符
第三章 边界
- ^ 行或者字符串的起始位置
- $ 行或字符串的结尾位置
- \b 单词边界
第四章 选择、分组和后向引用
第五章 字符组
[0-9]
[^aeiou]
[0-3[6-9]]
第六章 匹配Unicode和其他字符
第七章 量词
贪心、懒惰和占有
量词就是贪心。贪心的量词首次尝试匹配整个字符串,如果失败则回退一个字符后再次尝试。这个过程叫做回溯。它会每次回退一个字符,直到找到匹配的内容或者没有字符可尝试为止。此外,它还记录所有的行为,因此相较另两种方式它对资源的消耗最大。
懒惰的量词它从目标的起始位置开始尝试寻匹配,每次检查字符串的一个字符,寻找它要匹配的内容。最后,它会尝试匹配整个字符串。要使一个量词成为懒惰的,必须在普通量词后添加一个问号(?)。
占有量词会覆盖整个目标然后尝试寻找匹配内容,但它只尝试一次,不会回溯。占有量词就是在普通量词之后添加一个加号(+)。
7{1,} == 7+
7* == 7{0,}
7? == 7{0,1}
总结
^\(?(?:\d{3})\)?[-.]?(?:\d{3})[-.]?(?:\d{4})$