zoukankan      html  css  js  c++  java
  • PHP 中正则的应用 I Ⅱ Ⅲ

    正则的重要作用:通过正则分割、匹配、查找、替换内容;

    正则的几个基本点:元字符 ,重复,字符类,分支条件,分组,反义,反向引用,零向断言,负向零宽断言,贪婪,懒惰,平衡组,递归匹配等。

    正则语法:

    原子

    a-z A-Z _ 0-9
    (abc)(efg) 单元字符
    [abcd][^abcd] 包括原子表,^代表排除或相反内容
     [0-9] 包含所有数字
    B [^0-9] 除数字外的所有
    w 所有字母
    W 除字母外的所有字符
    s 包含空白、回车、换行
     
     

    PREG_MATCH 和 EREG

    int preg_match ( string $pattern(正则内容) , string $subject(正则语法) [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] (结果为数组))

    <?php
    $subject = "abcdef";
    $pattern = '/^def/';
    preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
    print_r($matches);
    ?>
    preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。
    preg_match_all()不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE
     
    //模式分隔符后的"i"标记这是一个大小写不敏感的搜索
    $mode="/w/";
    $str="adjsk66sdfszf";
    echo "<hr>"; if(preg_match($mode,$str,$arr)){ echo"匹配成功".$arr[0]; }else{ echo"不成功";}

    不使用贪婪时,只匹配第一个;

    元字符

    特殊 or 运算符号;

    * 匹配前一个内容的0次或1次或多次

    .匹配内容的0次或1次或多次,但不包括回车换行;

    + 一次或多次

    ?0次或1次

    | 类似 "||" 或者 "or"; 前后任意一个匹配

    ^ 匹配字符串首部内容  ctrl符号,必须出现在匹配内容的首部

    $ 匹配字符串尾部内容 类似上面

     匹配单词边界,边界可以是空格或特殊字符

    B  这两个在英文中会很好用,但是中文里不太好用;

    b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格标点符号或者换行来分隔的,但是并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置

    {m}

    {m,}

    {m,n}

    () 依次放入内存中,用 1,2获取;  举例:  $mode="/d{2-4}}(.*)d{1,2}\1d{1,2}/";   $str = "2016-10-17"  前面要什么,后面也用什么,因为是调用的,前面那个查出来后会存入内存。

    正则运算顺序

    左→右;

    优先级() > * 、? 、+、{} > ^、$、 > |

    模式修正符

    /正则/U

    常用的修饰符:

    i 不区分大小写;

    m 在匹配首内容或尾内容时采用多行识别匹配; 增强 ^ 和 $ 的功能。

    s 将回车取消,;

    x 忽略正则中的空白;

    A强制从头开始匹配;

    D强制$匹配尾部无任何内容

    其他相关点:

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] );

    该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

    在加工前的对象是subject,查询的条件是search,把匹配的内容,全部替换成replace的内容。

    如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace()preg_replace()

    search 和 replace可以是一一对应的数组,如 $search = array{a,b,c,d} ; $replace = array{1,2,3}; 这种情况里,replace数组内值的个数少于search,d 会被替换为空" ";

    如果情况为 $search = array{a,b,c,d} ; $replace = "hehe"; 则abcd都会被"hehe"替换;

     

     

     

     
     
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: PMFuzz: Test Case Generation for Persistent Memory Programs
    入围 WF 后训练记
    算法竞赛历程
    2021 多校 杭电 第十场
    2021 多校 杭电 第九场
    2021 多校 牛客 第十场
    2021 多校 牛客 第九场
    2021 多校 杭电 第八场
    2021 多校 杭电 第六场
    2021 多校 杭电 第七场
  • 原文地址:https://www.cnblogs.com/07byte/p/5961521.html
Copyright © 2011-2022 走看看