花了一天时间读完正则表达式必知必会,新入入门的确是个好资料。
1.转义字符 \,表示字符有特殊含义,而不是字符本身含义。在正则表达式中,\字符永远出现在一个有着特殊含义的字符序列的开头,这个序列可以由一个或者多个序列组成。
2. 定义集合:可以用[]定义一个匹配集合,[]中的所有字符都是这个集合的组成部分。[]中的字符区间可以用连字符 - 连接,如[0-9]表示[0123456789],连字符- 只在区间[]中有特殊含义,在其他字符串中表示普通字符,不用转义。
3. 在同一个字符集合里可以给出多个字符区间。
4. 在字符集合中使用元字符^来表示取非,如[^0-9]
5. [\b] 回退并删除一个字符(Backspace键)
[\f] 换页符 [\t] 制表符 [\n]换行符 [\r] 回车符 [\v]垂直制表符
6. 字符集合(匹配多个字符中的某一个)是最常见的匹配形式,而一些常用的字符集合可以用特殊的元字符来代替。
7. \d --------- [0-9]
\D --------- [^0-9]
\w --------- [a-zA-Z0-9_]
\W -------- [^a-zA-Z0-9_]
\s --------- [\f\n\t\r\v]
\S -------- [^\f\n\t\r\v]
8. +表示重复匹配一次或多次,至少一次。
9. 在字符集合中使用时,特殊的元字符可以不用转义,当然了转义也没什么坏处。如[\w.]+
10. +匹配一个或多个字符或字符集合,至少匹配一个;*匹配零个或任意多个字符(字符集合),可以没有匹配;?匹配零个或一个字符(字符集合)。
11. 指定一个字符(字符集合)匹配的次数,在字符(字符集合)后使用{n};或者可以设置一个区间{a,b},表示最少匹配a次,最多匹配b次;{a,}表示最少匹配a次。
12. +和*都是所谓的“贪婪型”元字符,它们匹配的原则是多多益善而不是适可而止,它们会尽可能的从一段文字的开头一直匹配到这段文本的结尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。解决办法是使用“懒惰型”表达,如*? +? {n,}?
13. 匹配单词边界:\b
14. 匹配字符串边界:^表示开头,$表示结尾。
15.用()括起来的是子表达式,表示一个独立的元素。
16. 把必须匹配的情况考虑周全并写出一个匹配结果符合预期的正则表达式很容易,但把不需要匹配的情况也考虑周全并确保他们都将被排除在匹配结果以外更加重要。
17. 子表达式常见的用途包括:对重复次数元字符的作用对象作出精确的设定和控制,对|操作符的OR条件做出准确定义等。
18. 回溯引用允许正则表达式模式引用前面的匹配结果。是模式的后半部分引用在前半部分中定义的子表达式。注意:回溯引用只能用来引用模式里的子表达式。回溯引用匹配通常从1开始计数(\1 \2 等等)在许多实现里,第0个匹配可以用来代表整个正则表达式。
19. 向前查找指定了一个必须匹配但不在结果中返回的模式,任何一个子表达式都可以转换为一个向前查找表达式,只要给它加上一个?=前缀即可。(查找出现在被匹配文本之后的字符,但不消费那个字符)
20. 向后查找操作符,?<= (查找出现在被匹配文本之前的字符,但不消费它)
21. 负向前和负向后查找, ?! ?<! 负向前查找将向前查找不与给定模式相匹配的文本,负向后查找将向后查找不与给定模式相匹配的文本。
22. 并不是所有的正则表达式实现都支持向后查找和负向后查找。