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"替换;

     

     

     

     
     
  • 相关阅读:
    临时记事本
    D版??班得瑞英文天籁CD13集(下载!!!)
    一个程序员的早上
    使用C#实现Morse码的输出
    面向对象编程的乐趣(TextBox.Text="")
    如何从MS Word的表格中提取指定单元格的数据
    使用Turbo C创建自己的软件包(即创建接口)
    使用C#读取Word表格数据
    一种光栅绘制直线的方法
    关于数据库设计的一个思索这样做是不好的
  • 原文地址:https://www.cnblogs.com/07byte/p/5961521.html
Copyright © 2011-2022 走看看