一、正则表达式-简介
1. 概念
正则表达式,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
2. 特点
(1) 灵活性、逻辑性和功能性非常的强;
(2)可以迅速地用极简单的方式达到字符串的复杂控制。
(3)对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
二、正则表达式-元字符
1. 普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
2. 非打印字符
cx
匹配 x 指示的控制字符。例如,cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是“c”字符本
f
匹配一个换页符。等价于x0c和cL
匹配一个换行符。等价于x0a和cJ
匹配一个回车符。等价于x0d和cM
s
匹配任何空白字符,包括空格、制表符、换页符等。与 [ f v] 等效。
匹配任何空白字符,包括空格、制表符、换页符等。与 [ f v] 等效。
S
匹配任何非空白字符。与 [^ f v] 等效。
制表符匹配。与 x09 和 cI 等效。
v
垂直制表符匹配。与 x0b 和 cK 等效。
w
匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
W
与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。
xn
匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,“x41”匹配“A”。“x041”与“x04”&“1”等效。允许在正则表达式中使用 ASCII 代码。
匹配任何非空白字符。与 [^ f v] 等效。
制表符匹配。与 x09 和 cI 等效。
v
垂直制表符匹配。与 x0b 和 cK 等效。
w
匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
W
与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。
xn
匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,“x41”匹配“A”。“x041”与“x04”&“1”等效。允许在正则表达式中使用 ASCII 代码。
3. 特殊字符
所谓特殊字符,就是一些有特殊含义的字符。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 () 放在它们前面。
4. 限定字符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
5. 定位符
定位符用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,描述单词的前或后边界,B表示非单词边界。
6. 选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。
7. 反向引用
在正则中,当我们需要匹配两个或多个连续的相同的字符的时候,就需要用到反向引用了,查找连续重复的字符是反向引用最简单却也是最有用的应用之一。