正则表达式入门(1)——基础:简单的匹配一组字符
强迫症严重!正则表达式必须学起来!这里只记录一些快速语法,细节问题不涉及,先凑合用着,以后再深究。
1.匹配纯文本
没什么好说的,就是直接匹配文本。
2.匹配任意字符
“.” 字符(英文的句号):匹配任意单个字符。
例如
c.t
可以匹配cat、cot、cmt等等。
b..s
可以匹配bars、bits、boss等等。
注意,点字符可以匹配除了“换行符”以外的其它任意字符。换行符也就是\r\n这种东西。
3.大小写问题
正则表达式区分大小写,所以需要注意一下。
4.使用\(反斜杠)转义字符
如果想匹配文件名,里面的“.”就需要用转义字符“.”。
...\.txt
这会找出三个字符加“.txt”,例如:
bar.txt
abc.txt
等等。如果一个文件名是longnames.txt,那么会匹配mes.txt。
有“\”(反斜杠)出现一定是转义字符,如果要匹配反斜杠本身,就用两个反斜杠“\”表示。
5.匹配一组字符(字符集合)
用”[]“(方括号)括起来的内容,就是字符集合。[Rr]表示R或者r都可以。
“[]”本身不匹配任何内容,只是定义一个字符集合。字符集合定义一个取字符的范围,在这个范围里匹配单个字符。
所以:
[Rr]eg[Ee]x
可以匹配RegEx、regEx、Regex等等,但是不匹配REGEX,因为中间的eg必须小写。
6.字符集合区间
如果要匹配单个数字,可以这样定义字符集合:
[0123456789]
也可以这样定义:
[0-9]
意思是一样的。用一个减号连起来表示字符集合区间,也可以用[A-Z]、[a-z]、[A-F]等等。
注意,用“-”表达的字符集合区间的范围是按照ASCII码排列的。
另外注意,[6-3]这样的范围是没有意义的,因为前一个字符在ASCII码中的位置一定要比后一个字符靠前。
如果要从所有字母和数字中匹配一个字符,可以这样写:
[A-Za-z0-9]
如果要匹配web颜色值,可以这么写:
#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]
因为web颜色值的格式是:#后面跟6个字符,这6个字符要么是数字,要么是任意大小写的A到F之间的字母。
7.字符集合中的取“非”匹配
意思就是“除了xxx以外”的匹配。比如要匹配“除了R和r以外的任意字符”,那么就是:
[^Rr]
“\^”符号就是键盘上的Shift+6。取非字符作用于它所属的整个字符集合,而不是紧跟它的字符。
接下来讲元字符(专用语法字符)。