“正则表达式”应用于字符串操纵,使用具有特定含义的元字符或普通字符进行匹配。
其中元字符又分为几类,分别为:特殊字符、限定符以及定位符。
这里我们通过对元字符的逐个讲解,来对正则表达式进行学习。附:所有正则表达式都为加粗蓝体
在线练习工具:http://tool.oschina.net/regex/?optionGlobl=global#
一、元字符之定位符^
匹配字符串的开始位置,准确来讲应该是一行的开始位置。如果设置了Mutiline多行属性,则也对\n之后和\r之后的位置进行匹配。
譬如:正则表达式^ab
可以匹配abc之中的ab,但不能匹配cabc中的ab,原因在于cabc之中的ab之前有c而并非是字符串开始位置。
图中之匹配到了箭头所指的字符串,而第二个并未将之匹配,原因在于第一个abc与第二个abc之间有不可见字符空格(ASCII码:32(Dec))。空格属于广义的字符,所以第一行的字符串其实是“abc abc”。同时,若设置了Mutiline属性,则第二行中的ab字符串将被识别匹配。
二、元字符之定位符$
匹配字符串的末尾结束位置,准确来讲应该是一行的结束位置。如果设置了Mutiline多行属性,则也对\n之前和\r之前的位置进行匹配。
譬如:正则表达式cd$
可以匹配acd之中的cd,但不能匹配acda之中的cd,原因在于acda之中的cd之后有多余字符a,并不是字符串结束。同时关注Mutiline属性设置与否的不同。
三、元字符之定位符\b
匹配单词字符与非单词字符之间的单词边界。注意:这里的单词字符包括:数字、字母、下划线。其实就是“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”。一定要注意不只是空格和字母之间的叫做单词边界,甚至-a这个字符串之中就有两个单词边界。1、-与a之间的单词边界,2、a与行结尾之间也是单词边界。
这里要强调,单词边界是单词字符与非单词字符之间的产物。特别的单词字符可以使用\w来表示,非单词字符可以使用\W来表示
四、元字符之定位符\B
匹配非单词边界,与\b在集合上互为补集。一般应用不多。