什么是正则表达式?
其实就是一些匹配字符的式子而已, 不过这个式子不只是ctrl + F 的完全匹配, 而是异常的灵活, 在各种奇葩要求的字符查找要求上很有价值正则表达式是分普通字符和元字符的, 就好像一般语言中分普通字符和转移字符一样;
普通字符
其实就是一般的字符, 比如‘a', 'b', ’我'
元字符
元字符就像转移字符一样不能直接匹配, 他们代表的是一些特殊的东西, 也是这些字符构成了正则表达式的框架(要是每个字符都用来匹配怎么能成多功能的表达式)
这些都是元字符
. ^ $ * + ? { [ ] \ | ( )
注意, 这些字符中是没有双引号和单引号的
现在我们一个一个开始讲上面的字符:
字符类别 []
这个就是 [] 里面的字符是一个字符集, 只要满足其中任意一个都可以,
我最想强调的是 写在这里面的任意字符都是当做普通字符处理, 即使[] 里面有元字符也是当普通字符处理的, 这个必须注意,
不过更值得注意的元字符 ^
, 这个字符很特殊, 如果将 ^ 作为[] 里面的第一个字符, 那么他是当做元字符用的, 就是非的意思, 也就是补集的意思;
反斜杠 \
最重要的元字符, 在某些语言中作为转移字符而用, 在这里是作为普通字符和元字符的通道, 当然还有别的作用
当想匹配元字符的时候就在元字符前面加上反斜杠就可以取消了, 当然还有如下作用
\d 匹配任何十进制数;它相当于类 [0-9]。 \D 匹配任何非数字字符;它相当于类 [^0-9]。 \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。 \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
重复字符
当我想匹配多个一样的字符或者一样的字符集的时候我就可以用重复的作用了
重复字符有如下几种
? 匹配0次或一次
+ 匹配一次及以上
* 匹配0次或多次
{m, n} 匹配m到n次
匹配分组
什么是分组呢? 加入你想匹配一个特定超链接, 那么其中有一个src的属性, 怎么把这个src的值取出来了, 那就是分组
分组就是用() 括起来, 那么()里面的就是一个分组
比如有如下链接:<img src="http://img04.taobaocdn.com/imgextra/i4/1034130726/T2yfxBXuRXXXXXXXXX-1034130726.jpg">
那么我们的表达式写成 src=\"([^"]*) , 这个时候括号里面就是一组了