0.开始

最近一段时间对正则表达式的需求比较大,于是去图书馆一口气借下了几本正则相关的书打算最近几天系统学习一下,本文记录正则表达式学习笔记

1.匹配单个字符

.匹配任意字符

2.匹配字符集合

[]匹配字符集合:[123]:1或2或3;[a-z]:一个小写字母

^非,表示不含有:[^a-z]:不含小写字母

3.匹配元字符

3.2特殊字符

\转义字符,用来匹配特殊字符

3.2空白字符

[\b]Backspace

\f换页符

\n换行符

\r回车符

\t制表符Tab

\v垂直制表符

\s任意空白字符 等价[\f\n\r\t\v]

\S任意非空白字符

\r\n为windows所用的文本行结束标签

Unix匹配空白行只使用\n\n,不需要\r

3.3匹配数字

\d任意数组,等价[0-9]

\D任意非数字,等价[^0-9]

3.4匹配字母和数字

\w任意字母数字或下划线 等价[a-zA-Z0-9_]

\W任意非字母数字下划线

3.5匹配十六进制或八进制

可以通过某个特定字符的十六进制或者八进制数值来匹配

\x匹配十六进制字符,如\x0A对应于ASCII字符10(换行符),因此效果等同于\n

\0匹配八进制字符,\011对应ASCII字符9(制表符),效果等同于\t

4.重复匹配

+在一个给定字符或字符集合后加上+表示匹配多次重复

*+用法相同,不同点在于其可以匹配0个字符,而+至少需要匹配一个

  • 电子邮件地址匹配

\w+[\w.]*@[\w.]+\.\w+

@前最开头\w+必须是字母组合不可为点,[\w.]*往后可以是多个或0个点和字母的组合,随后匹配一个@不需要使用反斜杠转义,@之后必须是字母组合加点加字母组合表示域名,由于邮件地址可以有子域名因此可以匹配多个字母加点的组合使用[\w.]+\.\w+

4.1允许匹配0个

?匹配零个或一个字符

  • 网址匹配

https?://[\w./]+

4.2匹配重复次数

{6}在字符或字符集后使用以指定匹配重复的次数

  • 匹配十六位RGB色值

#[0-9a-fA-F]{6}

{2,6}设定匹配重复次数区间

{6,}至少重复6次

4.3防止过度匹配

?匹配尽可能少的字符

*=>*?

+=>+?

{n,}=>{n,}?

5.位置匹配

5.1单词边界

\b表示单词边界,开头或结尾

\bcat\b就是匹配一句话中的cat这个单词,而不会匹配某个包含cat三个字母长单词中的cat

实际上\b匹配的是一个位置,这个位置位于一个能组成单词的字符等同于\w即字母数字和下划线与一个不能组成单词的字符\W之间的位置

5.2字符串边界

^匹配字符串开头

$匹配字符串结尾

  • 匹配xml文档的开头标记

^\s*<\?xml.*\?>

  • 匹配html文档最后的</html>标记

</[Hh][Tt][Mm][Ll]>\s*$