基本概念
字面量
如图所示,字面量就是你想要匹配的字符串.
字面量.png
字符组(方括号表达式)
如图所示,字符组由字符组起始符 '[' ,要匹配的模式与字符组结束符 ']'
字符组.png
锚位符
锚位符由脱字符(^)与美元符号($)构成.
脱字符将会使后面的字面量,字符组等,匹配到一段字符串的开头.而美元符号则会使它前面的字面量,字符组等,匹配到一段字符串的结尾.
如图所示,普通匹配可以直接匹配到2334中233.然而使用了脱字符的正则表达式则不能匹配到2334中的233,因为$符号前面的是数字3,那么匹配的字符串末尾也必须要是数字三,锚位符的主要作用就是用来指定字符串的开头与结尾的.
普通匹配.png 脱字符匹配.png量词
量词是类似于循环一样的东西.诸如{m,n},*,+这些就属于量词.
例如\d{2,3},它就表示匹配2到3次数字.而\d*则表示匹配0到多次数字
捕获分组,向后引用与非捕获分组
捕获分组我举三个例子,就能明白了.
(\d)就是一个分组,在正则中,可以由\1代指分组1.
1.png
(\d)(\D),在这里面(\D)是分组2,由\2代指.
2.png
(\d(\D))(\d)在这里,最外层的\d是分组1,而在内层的\D则是分组2,[0-9]则是分组3.
可以看出分组是按照从外往内,从左往右进行划分的.
3.png
所谓向后引用,则是在建立分组后,由\1,\2...\n这样的关键字进行引用的.
非捕获分组则是不会被捕获的分组,即无法被\1,\2这样的向后引用关键字所指代的分组.
例如: (?:\d),此时使用\1就无效了.
这里有一个容易让人误会的地方,我举个例子:
例如: (\d)\1
在这里 \1并不是代表字符组\d,而是代表\d匹配的值,例如\d匹配到了2,那么\1就代表2.
选择
形如T|t这样的形式就是选择,它会在T与t之间选择一个进行匹配
选择.png
网友评论