1. 正则表达式
1.1 用处
正则表达式就是记录文本规则的代码
这句话我觉得概括的很精炼.
1.2 元字符
正则表达式里有一些元字符, 他们代表的是很多意思, 有某种特征的集合呀, 不包括某种字符的集合呀.
1.2.1 匹配字符种类的元字符
以下探讨的都是代表一个字符的元字符.
. : 就是英文字符的句号 . , 匹配除了换行符以外的任意字符。
\s: 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等.
\S: 匹配任意不是空白符的字符.
\w: 匹配字母[a-z], [A-Z] 或数字[0-9] 或下划线_ 或汉字等.
\W: 匹配任意不是字母,数字,下划线,汉字的字符.
\d: 是匹配一位数字从0到9, 任意一个数字就行。
\D: 匹配任意非数字的字符
\b: 并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置. 这个位置和后一个字符或者前一个字符的类型不一样.
比如: \b\w, 这个\b就是匹配不是\w的字符, 并且不会匹配到这个字符; 如果是\b. , 就是匹配不是. 的字符. 就近匹配,比如\bAB 匹配A,AB\b 匹配B
\B: 就是上面反过来, 说不清, 举例来看: ‘aabbc’ 中 ‘\Ba’ 匹配的是第二个a, 因为\B代表跟后面的字符类型一样的字符, 但是不要这个\B代表的字符.
[ ]:从中挑一个字符, 注意是一个字符, 例如[fuck]就是从f, u, c, k 四个字符中挑选一个, 还有[0-9]从0到9选一个, 还有[a-d]或者[E-G], 从a, b, c, d 或者E, F, G中选一个.
| : 从前或者后, 选出取个来, 是或的意思. 例如: ‘abc|de’ 的符合匹配对象是’abc’ 或者’de’, 而不是’abc’ 或’abde’. 一定要注意.
[^ ]: 取反^配合[ ]使用, 就是[ ]内的字符以外的字符都可以, 例如: [^\d]匹配除了数字以外的任意字符, [^aeiou]匹配除了aeiou这几个字母以外的任意字符.
\A: 代表后面这个字符必须在字符串开头. 例如: ‘aba’ 用’\Aa’ 来匹配, 能匹配到第一个a, 不能匹配到第二个a; 如果用’\Ab’ 来匹配, 匹配不到.
^: 用来表示, ^后面这个字符, 必须是一行的开始, mutilline模式下, 会按行分隔符分隔成很多行, 所以会有很多行首, 在默认模式和singleline模式下, 就是一个长的字符串, 所以只有一个行首
$: $前面的这个字符, 必须是行尾, 规律同上.
一共11种.
1.2.2 控制字符数量的元字符
配合上面代表字符种类的元字符使用, 接在字符的后面, 可以代表字符重复多少次. 注意, 他们只控制前面一个字符的数量.
贪婪地匹配:
因为能匹配到的数量不确定, 所以就尽可能多的匹配, 比如’@bbb@bbb@’ 中, 用’@.+@’来匹配, 结果是’@bbb@bbb&