• PHP.相关技术.正则表达式


    学习git的时候正好需要这方面的知识,刚好自己也有些知识点有些模糊了,复习一遍。

    正则表达式是什么?

    • 正则表达式就是一个匹配的模式
    • 正则表达式本身就是一个字符串(有一些语法规则,特殊字符)

    正则表达式概念简介

    主要分为 定界符, 原子, 元字符, 模式修正符

    • 定界符:顾名思义,就是模式表达式的界限,如 /aaa/,这个 //就是定界符。正则表达式写在定界符中
    • 原子:要寻找的字符,在一个模式表达式中,至少有一个原子
    • 元字符:不能单独使用,用于修饰原子,扩展原子功能和限制原子功能
    • 模式修正符:对模式进行修正用的,写在定界符外面

    定界符

    在程序语言中,使用与Perl兼容的正则表达式,通常都要将模式表达式放入定界符中,如 //. 除了字母、数字、 以外的任何字符都可以作为定界符

    原子

    原子指的是那些未被指定为 元字符 的打印字符和非打印字符组成,所有符号都为原子。

    • 打印字符:a-z A-Z 0-9 _ !@#$%^&*()_+ 等

    • 非打印字符:

      • 匹配一个换行符
      • cx 匹配由x指明的控制字符 x的值为A-Z 或者a-z之一
      • f 匹配一个换页符
      • 匹配一个回车符
      • 匹配一个制表符
      • v 匹配一个垂直制表符
    • 可以将有意义的字符转为无意义的,也可以将无意义的转为有意义的,如上述的 非打印字符

    • 可以使用系统提供的代表范围的原子

      • d:代表任意一个数字 [0-9]
      • D:代表任意一个非数字 [^0-9]
      • s:代表一个空白 [ f ]
      • S:代表一个非空白 [^ f ]
      • w:代表任意一个字(a-z A-Z 0-9 _) [a-zA-Z0-9_]
      • W:代表任意一个非字 [^a-zA-Z0-9_]
    • 自定义原子表 [],只有一个生效就可以。 以上可以用自定义原子表来代替 如 d为[0-9]等

      • -:表示范围
      • ^:表示除了
    • . 能代表所有的

    元字符

    • *: 前面的原子可以出现0次,1次或者多次 {0,}

    • +: 前面的原子可以出现1次或者多次 {1,}

    • ?: 前面的原子可以出现0次或者一次 {0,1}

    • {n}: 前面的原子必须出现n次

    • {n,m}: 出现n到m之间的次数 包括n和m

    • {2,}: 出现至少两次

    • {,5}: 不可以这样写,可以以0开始

    • |: 或的关系,表示它两边的原子只要有一个出现就行,但是|的优先级是最低的

    • ^A: 必须以什么开始,这个必须写在正则表达式的最前面

    • $: 必须以什么结束,这个必须写在正则表达式的最后面

    • : 匹配单词边界的

        如 this is island 用 /is/可以匹配中间的那个is
      
    • B: 匹配单词边界以外的的

    • ()的作用

      • 改变优先级
      • 将小原子变成大原子,如 (aaa)*
      • 子模式,整个表达式是一个大的模式,小括号中是每个独立的子模式,能获取全模式和所有的子模式
      • 反向引用,即将子模式用在正在表达式中。

    模式修正符

    • 模式修正符号要写在定界符号外,放在右边

    • 模式修正符号,一个字符就是一个功能,可以组合使用

    • 作用:模式修正符号可以修正正则表达式的解释,或扩充了正则表达式的功能

    • 用法

      • i 不区分大小写(默认是区分大小写的)
      • m 默认是看做一行的,加上m就视为多行
      • s 使用了这个.可以匹配换行符
      • x 修正正则表达式,可以省略空白
      • e 修正正则表达式 preg_replace
      • U
        • (.*,.+)正则表达式比较贪婪
        • (.*?) (.+?)取消贪婪模式
        • U也能但是不兼容
        • 这两种方式同时使用就不会奏效了
  • 相关阅读:
    web开发发送短信实现最简单的接口
    2分钟学会ajax 入门ajax必备
    基于注册登陆简单的使用django认证系统
    Django 发送邮件
    关于python开始写项目创建一个虚拟环境
    pycharm使用bootstrap组件方法
    linux安装配置python环境以及虚拟环境和django下载
    luffy项目搭建流程(Django前后端分离项目范本)
    python微信服务号关注授权、消息推送流程
    Celery—分布式的异步任务处理系统
  • 原文地址:https://www.cnblogs.com/qiye5757/p/8870803.html
Copyright © 2020-2023  润新知