正则笔记

作者: Touchs | 来源:发表于2016-07-12 07:02 被阅读92次

    1, 特殊符号之匹配开头和结尾的 '^' 和 '$'
    '^' -- 以某个字符串开始.
    '$' --以某个字符串结尾.
    例:(^the[a-z ]+) 匹配 ''the book is good 呵呵呵哈哈哈'' 中的''the book is good''

    2, 特殊符号之匹配出现次数的 '' '+' 和 '?'
    '
    ' 表示某个字符可能出现0次或者多次 例如ab* 匹配a或者ab或者abb....
    '+'意思和'*'类似 区别在于+匹配至少出现一次,不能不出现,ab+ 则匹配不了a,但可以ab,abb....
    '?' 则匹配某字符只出现一次,或者根本就不出现
    某字符可以用[] 或者() 代替 那样的话则表示一个字符串或一个表达式

    3, 特殊符号之匹配出现一定次数的{n} {n,} {m,n}
    {n} 表示前面的字符出现多少次, bo{2} 匹配book或者booook中的boo 不能匹配bok
    {n,}表示前面的字符至少出现n次,* == {0,} + == {1,}
    {m,n} m必须小余n,表示至少匹配m次,最多匹配n次 ? == {0,1}

    4,特殊符号之贪婪的 ?
    当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配 所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。

    5, 特殊符号之通吃符 .
    匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

    6.正则转意符号之
    将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("。

    以上是最基本的正则符号,, 这里算是入个门了,消化一下 在接着往下看吧..........

    7,正则字符之关系符号 或--- | (x|y 匹配 x 或 y。)
    例如用(z|f|s)ood 匹配 hehedazood houhouhoufood heiheihei sood中的 zood,food,sood

    8,正则字符之集合[] ----[xyz]匹配集合中所包含的任意一个字符.

    9.正则字符集合[^xyz] 匹配不包含xyz中的的任意一个字符。如:[^a-z]匹配不包含小写字母的字符 [^0-9]不包含数字的字符.

    10,正则字符\b表示空格 blank嘛 表示前面的字符的下一个字符是空格.

    11.正则字符\B 则表示前面的字符的下一个字符 不 是空格.和上面的相反

    12,正则字符 \d 表示数字等价于 [0-9]

    13,字符 \D表示非数字等价于[^0-9]

    14,字符 \w 匹配任何数字或字母包含带下划线.== [A-Za-z0-9_]

    15,字符\W 和上面的相反,匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'

    16,字符 \count \1 表示后向引用,表示表达式中,从左往右数,第一个左括号对应的括号内的内容。以此类推,\2表示第二个,\0表示整个表达式 例如:\d{4}([-/])\d{2}\1\d{2} 匹配2016-08-29 其中\1表示([-/])这个括号在前面匹配的字符 前面匹配了- 后面就引用 - ,总之引用前面括号匹配的内容,所以这个要配合括号使用

    17.字符 \s 匹配任何空白字符,包括空格、制表符、换页符等[ \f\n\r\t\v]

    18.字符 \S 和上面的相反 等价于 [^ \f\n\r\t\v]

    19.字符 \r 匹配一个回车符

    20.字符 \n 匹配一个换行符

    21, \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码

    22, (?=pattern) 和 (?!pattern)
    正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)
    "能匹配"Windows2000
    "中的"Windows
    ",但不能匹配"Windows3.1
    "中的"Windows
    "。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    一些基本的注意事项:
    a,为了逐字表达,你必须在"^.$()¦*+?{"这些字符前加上转移字符''。请注意在方括号 中,不需要转义字符。
    b,匹配纯中文 [\u4E00-\u9FA5].
    c, \ ( [ ^ \ ( \ ) ] + \ ) 匹配一串字符串中的小括号里面的内容 中括号里面的内容匹配1一次以上 其中不包括'(' 和' )' ( 此表达式复制的时候请把中间的空格都去掉 因简述显示问题不得不加空格)

    相关文章

      网友评论

        本文标题:正则笔记

        本文链接:https://www.haomeiwen.com/subject/nlsjjttx.html