美文网首页
正则表达式

正则表达式

作者: 食梦狸猫 | 来源:发表于2019-03-26 09:54 被阅读0次

    正则表达式是Perl内嵌的一个微型编程语言

    使用简单模式

    匹配对象是$_内容,那模式本身就是一串简单的字符串序列,把模式写在/中.

    $_ = "asda";
    if(/asad/)
    {...}
    

    Unicode属性

    Unicode每个字符除了字节组合外,还有属性信息,除了匹配字符本身,还可根据字符属性来匹配。若要匹配某项属性,只需把属性名放入\p{PROPERTY},例如:

    if(/\p{Space}/)
    {...}
    

    匹配空白符。

    if(/\p{Digit}/)
    {...}
    

    匹配数字
    将p改为大写表示不匹配

    if(/\P{Space}/)
    {...}
    

    不匹配空白符

    元字符

    .可以匹配除了换行符之外任意字符。如果想只是匹配.本身,要加上反斜线转义。

    简单量词

    • *能匹配前一个字符零次或者无数次。
      例如
    "fred\t*ban"
    

    那么能匹配在fred和ban之间包含0次或者无数次制表符的字符串。

    .*能匹配任意字符0次到无限次

    • +匹配前一个条目一次以上。

    • ?匹配前一个条目只出现一次或者不出现

    模式分组

    • ()的作用是对字符串分组,使多个条目合并为一个条目。
    /fred+/
    #可以匹配freddddd
    /(fred)+/
    #可以匹配fredfredfred
    /(fred)*/
    #可以匹配hello,world
    

    捕获组

    通过反向引用来引用圆括号中的模式所匹配的文字。反向引用是在反斜线后面接上数字编号

    if(/(.)\1/)
    {...}
    #匹配连续重复出现的两个字符"aa"
    
    if(/y(....)d\2/)
    {...}
    #匹配yabccdabccabcc
    

    在Perl5.10后可用\g{N}表示新的反向引用写法。N表示要反向引用的组号。

    if(/(.)\g{1}/)
    {...}
    

    择一匹配

    | 的意思是匹配左边的内容失败了可以匹配右边的内容

    /fred(|\t)+barney/
    #(|\t)可能匹配空格或者制表符
    这就可以匹配两个名字之间至少要有一个空格或制表符
    

    字符集

    指一组可能出现的字符,通常写在([])表示匹配字符集中出现的单个字符。

    [a-zA-Z]
    

    字符集的简写

    表示任意一个数字的字符集简写是\d

    /[/d]/
    

    表示任意一个空白符的字符集是\s

    /[\s]/ == /[\f\t\n\r]/
    

    \h只匹配水平空白符,\v只匹配垂直空白符
    \w匹配单词字符

    反义简写

    [^\d] == \D
    #表示否定意义
    

    相关文章

      网友评论

          本文标题:正则表达式

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