• imooc正则表达式学习笔记


    PHP正则表达式

    1、正则表达式作用

    字符串搜索和匹配的工具。

    1正则表达式通配符。

    Windows搜索,*.jpg

    Linux命令,ls -l /dev/sda*

    2)正则表达式验证邮箱

    2、PHP中的正则表达式

    //php对象打印

    if(is_array($var) || is_object($var)){

    print_r($var);

    }else{

    echo $var;

    }

    PHP中正则表达式的函数

    1preg_match,preg_match_all

    作用:在目标字符串中查找正则表达式匹配

    用法:

    $num = preg_match($pattern,$subject,array &$matches)

    返回值:

    $num :返回匹配的个数。

    $matches:返回匹配的对象。

    $pattern = '/[0-9]/';

    $subject = 'wsijd09dfasd9dsf8fdas';

    $m1=$m2=array();

    preg_match($pattern,$subject,$m1);

    preg_match_all($pattern,$subject,$m2);

    $m1[0] = 0;//一维数组

    //$m2二维数组,$m2[0]--> array(0,9,9,8)

    2preg_replace,preg_filter

    作用:在目标字符串中查找正则表示式,替换成其他字符串

    普通字符串替换

    str_replace(find,replace,string,count)

    用法:

    $str1 = preg_replace($pattern,$replacement,$subject);

    $str2 = preg_filter($pattern,$replacement,$subject);

    preg_filter特殊用法

    $pattern =array("/[0123]/","/[456]/","/[789]/");

    $subject = array('weuy','r3ui','78as83','s','0ck9');

    $replacement= array('''','')

    $array1 = preg_replace($pattern,$replacement,$subject);

    $array2 = preg_filter($pattern,$replacement,$subject);

    //$array1 里面会返回全部数组,$array2里面元素只有发生匹配的才返回。

    3preg_grep

    用法,只匹配不替换。

    preg_grap($pattern,array $input)

    $pattern =array("/[0123]/","/[456]/","/[789]/");

    $subject = array('weuy','r3ui','78as83','s','0ck9');

    4preg_splite

    用法,分割目标字符串。

    $array = preg_splite($pattern,$subject);

    explode($str,$subject);

    5preg_quote

    用法,对目标字符串中可能存在的正则表达式运算符进行转义。

    $str = 'qwer{asdf}[1234]';

    $str = preg_quote($str);

    //qwer{asdf}[1234]

    总结

    preg_match-验证表单

    preg_replace-非法词语过滤

    3、正则表达式基本语法

    1界定符

    /[0-9]/

    *http://regexpal.com/

    2原子,通常是unicode编码中的一个字符

    可见原子,不可见原子。

    汉字,'u7ea6u5417'-->'约吗',利用转化之后的编码进行匹配。

    运算符符号,转义\,$,

    不可见原子,空格、tab制表符、回车。

    空格-->键盘空格,tab制表符--> ,回车-->

    3元字符

    原子的筛选方式,归类缩写。

    -| 匹配两个或者多个,[^ ]

    -[] 匹配括号中的任意一个

    -[^] 排除方括号中的原子之外

    Duang~|duang~ 匹配两种

    [Dd]uang~[]中拿出一个。

    [^789],必须是[^样式。[78^9]意义完全不同。

    [a-zA-Z0-9_]连续的写法。

    除了换行符之外的全部字符

    任意十进制数字

    非十进制数字

    不可见原子

    可见原子

    任意数字字母_

    非数字、字母_

    4量词

    {n},表示其前面的原子恰好出现n

    {n,} 最少出现n

    {n,m} 出现nm

    *01次多次{0,}

    +1次多次{1,}

    ?01{0,1}

    例子 555->5{3}[a-zA-Z]{2},连续两个字符;w{4}w*,只要是数字字母连续匹配在一起的;

    5边界控制和模式单元

    l ^ 匹配字符串开始的位置

    l $ 匹配字符串结束的位置

    l () 其中的整体为一个原子

    例子:***Duang

    ^Duang~,就不会匹配。此时强制D之前不会出现任何字符。~强制目标字符串必须以g结束,后面不可以有任意字符。

    (D|d)uang,[Dd]uang

    Duang duang 

    (D|d)当做一个原子。

    6修正模式

    l 贪婪匹配

    l 懒惰模式

    发生多种匹配情况是,贪婪匹配比较长的,懒惰匹配短的。

    例子:

    $pattern = '/imooc.+123/';

    $subject = 'i love imooc__123123123';

    $matches = array();

    preg_match($pattern,$subject,$matches);

    $matches[0]='imooc__123123123';

    默认情况下,是采用贪婪匹配。

    $pattern ='/imooc.+123/U';

    $matches[0]='imooc__123';

    • U-懒惰模式
    • i-忽略大小写
    • x-忽略空白
    • s-'.'匹配换行符在内的所有字符

    例子:

    $pattern ='/i Mo oc.+123/Uix';

    $subject = 'I love imooc__123123123';

    x忽略正则表达式中的空白字符

  • 相关阅读:
    iOS 小技巧总结
    iOS 字符串常用编码互相转换
    iOS点击cell查看大图,点击大图还原小图
    Cocoapods配置
    匈牙利匹配
    ISAP网络流
    BZOJ 3262--陌上花开
    android应用找回签名问题jarsigner
    android定位混淆过后的crash问题
    axios++:防止重复提交全局统一拦截
  • 原文地址:https://www.cnblogs.com/birdskyws/p/4401616.html
Copyright © 2020-2023  润新知