zoukankan      html  css  js  c++  java
  • 1.part1-2day php正则表达式

    学习目的:匹配字符

    一、正则表达式

    正则表达式由元字符和文本字符和修饰符组成,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。

    二、修饰符有:i 忽略大小写;g全局匹配;m多行匹配;s单文本模式,只有在此模式下元字符(.)可以匹配换行符;x忽略空白字符;u匹配中文不乱码

    三、特殊字符:

    1.^开始字符,如:^m,表示以字母m开头的字符串;^还表示取反,如:[^m]不含有m的字符串,要匹配^需要转义为^

    2.$结束字符,如:m$,表示以字母m结尾的字符串,要匹配$需要转义为$

    3.转义字符,要匹配要转义为\,n匹配字符n, 匹配换行符

    4.( )标记一个子字符串的开始和结束,用( )时同时会把这段字符串输出,要匹配( ),用(和)

    5.[ ]标记中括号表达式的开始和结束,要匹配( ),用[和]

    6.{ }标记限定符表达式的开始和结束,要匹配{ },用{和}

    7. . 匹配除换行符 之外的任何单字符串,要匹配 . ,用.

    8.| 指明两项之间任意一个满足都可以。如:m|n,字符串存在m和n都能匹配,要匹配 | ,用|

    9.*匹配前面的子表达式零次或多次,要匹配 *,用*

    10.+匹配前面的子表达式一次或多次,要匹配 +,用+

    11.?匹配前面的子表达式零次或一次,要匹配 ?,用?

    四、限定符:

    1.{n}   n为一个非负整数,匹配n次

    2.{n,}  n为一个非负整数,至少匹配n次

    3.{n, m}   n和m均为一个非负整数,最少匹配n次,最多匹配m次

    4.*,+,?

    五、定位符

    1. 匹配单词边界,即字与空格间的位置,如果匹配m,tim能匹配,html不能匹配

    2.B 非单词边界匹配,如果匹配m,tim不能匹配,html能匹配

    3.^,$

    六、 字符类[ ],连字符 -,点号字符 .

    1.字符类[ ]:一个方括号只能匹配一个字符

    2.连字符 -:如要匹配12346,可以用[1-6],[1-6]被称为字符簇

    3.点号字符 .:可以匹配除换行符外的任意一个字符

    七、捕获分组

    1.括号符号 ( )

    可以改变限定符的作用范围,如:(thir|four)th,加上小括号是匹配单词thirth或fourth,如果不加小括号就变为匹配thir或fourth了

    分组也就是子表达式,如:(.[0-9]{1,3}){3},就是对分组(.[0-9]{1,3})重复操作。

    2.反向引用即后向引用

    如:要匹配zery zery,可以写为:w+sw+,但是也可以写为(w+)s1,其中1就是引用前面的括号分组(w+),分组引用序号左到右一次为1,2,3...,引用时前面要加,索引0表示匹配的整个内容

    3.(?<name>exp)为分组自定义名字,用?<name>引用的时候用k<name>即可,如:(?<char>w+)sk<char>

    4.(?:exp) 匹配exp,不捕获匹配的文本即不输出文本,也不给此分组分配组号,不能用在反向引用中

    以下是零宽断言:可以有也可以没有且与内容的间隔宽度为零

    5.(?=exp) 匹配exp前面的字符,如:how are you doing 正则:(?<txt>.+(?=ing)) 这里就是取ing前面的所有字符,并且定义了一个名为txt的捕获分组,在这里txt的值为 how are you do

    6.(?<=exp)  匹配exp后面的字符,如:how are you doing 正则:(?<txt>.+(?<=how)) 这里就是取how后面的所有字符,并且定义了一个名为txt的捕获分组,在这里txt的值为  are you doing

    7.(?!exp) 匹配后面不含有exp的字符串,如:123abc 正则:d{3}(?!d) 匹配前面时三个数字123后面不是数字的字符串

    8.(?<!exp) 匹配前面不含有exp的字符串,如:abc123 正则:(?<!d)d{3} 匹配三个数字123前面不是数字的字符串

    八、常用的形式

    1.x|y 匹配x或y

    2.[xyz] 匹配x,y,z中任意一个字符 

    3.[^xyz] 匹配除x,y,z的任意一个字符

    4.[a-z] 匹配小写字母a~z的任意一个字母

    5.[A-Z] 匹配大写写字母A~Z的任意一个字母

    6.[0-9]或是d 匹配0~9的任意一个数字

    7.D ==[^0-9] 匹配一个非数字字符

    8.w 匹配字母,数字,下划线。等价于[a-zA-Z0-9_]

    9.W匹配非字母,数字,下划线。等价于[^a-zA-Z0-9_]

    10.s 匹配任何空白字符,包括空格,制表符,换页符。等价于[f v]

    11.S 匹配任何非空白字符,包括空格,制表符,换页符。等价于[^f v]

    12.f 换页符

    13. 换行符

    14. 回车符

    15. 制表符

    16.v 垂直制表符

    九、php如何使用正则表达式(PCRE)

    <?php
      preg_match('/d+/u', '123'); //参数1时正表达式要在开头和结尾加上/和/,参数2是要匹配的字符串。只匹配一次返回值为0或1
      preg_match('/d+/u', '123'); //参数1时正表达式要在开头和结尾加上/和/,参数2是要匹配的字符串。匹配多次返回匹配的次数(可能为0),或者发生错误返回false
      preg_replace('/d+/u', '123', '456789aa', '1'); //参数1时正表达式要在开头和结尾加上/和/,参数2是要匹配成功后用来替换原子符串的字符串,参数3是要搜素的字符串,参数4是替换的次数,默认-1无限制
    ?>

    正则表达式友情链接

  • 相关阅读:
    MKMapView.showsUserLocation 可能触发了 UIView.setNeedsLayout
    用 Swift 语言写一个地图坐标弹跳动画
    用 Swift 语言写一个地图坐标弹跳动画
    Xcode 7 中 CocoaPods 编译报错 dyld: Library not loaded: @rpath/Pods.framework/Pods
    写于2016年4月
    vue.js组件的详解
    vue.js模拟抽奖
    java数据库的连接
    vue.js的创建
    发布网站的简单教程
  • 原文地址:https://www.cnblogs.com/ldwtry/p/12185565.html
Copyright © 2011-2022 走看看