zoukankan      html  css  js  c++  java
  • 基于PHP的正则表达式

    用法

    从某个字符抽取信息

    用新文本替换匹配的文本

    把字符串拆分成小块字符串组成的数组

    基础

    preg_match('/需要匹配的正则表达式/', '字符串');
    

    正则匹配模式

    集合:

    [xxxx]--一个字符串的可选范围,[ ^xxxxx]--一个字符串的不可选范围
    

    选择性:

    A|B: A或者B
    

    重复序列: 重复模式 + 量词

    量词

    ? --------------- 一次或者零次
    
    * --------------- 零次或者多次
    
    + --------------- 一次或者多次
    
    {n} ------------ n次
    
    {n,  m} ------- 至少n次,至多m次
    
    {n,  } -------------- 至少n次
    

    贪婪

    当匹配是遇到一个量词时,正则表达式引擎会尽可能多的匹配这个模式
    
    非贪婪匹配(最少匹配), 在量词后面加一个问号
    

    子模式: 使用小括号把几个正则表达式组合在一起

    捕获模式

    preg_match('/正则表达式/', string, array);
    
    array保存子模式匹配到的子字符串(依次放到第一位,第二位......), 开始位置放置string。
    

    非捕获模式

    当某些子模式不需要在匹配到时捕获,可以改写子模式(subpattern)为(?:subpattern)
    

    分隔符:

    任何非数字字母字符都可以被用来当做分隔符,来区分分隔符与表达式。
    

    字符类: 字符类中使用的命名字符集

    [:alnum:] --------------------- [0-9a-zA-Z]
    
    [:alpha:] ---------------------- [a-zA-Z]
    
    ......
    

    eg: 要查找任意一个数字,字母,或者@

    [@[:digit:][:upper:]]
    

    Hint: 排序序列[st[.ch.]] 匹配s, t, ch的其中一个

     等价类[=XXX=]      匹配本地定义的具有相同排序序列的字符
    

    锚(anchor): 将匹配限制在字符串中的特定位置

    ^ -------------------- 字符串、一行开始
    
    $ -------------------- 字符串、一行结束
    
    [[:<:]] -------------------- 单词开始
    
    [[:>:]]  -------------------- 单词结束
    
    ......
    

    后缀选项

    perl风格的正则表达式允许把一个单个字符放在正则表达式后面,从而改变表达式的解析, 行为, 匹配方式。
    
    后缀标识(一个模式中可以使用多个):
    
    /regexp/i ------------- 匹配大小写
    
    /regexp/s ------------ 使句点匹配任何字符
    
    /regexp/x ------------ 去掉空白和注释
    
    /regexp/m ------------ 使得^匹配换行符之后的内容,$匹配换行符之前的内容
    
    ......
    

    内联选项

    内联选项可以在一个模式内部指定仅运用于部分模式的后缀选项
    
    (?flags:subpattern) 	设置内联选项
    
    (?-flags:subpattern)	取消模式后面的选项
    
    ((?flags:subpattern))	内联标志不能用于捕获数组,需要额外设置一个小括号来完成捕获
    

    前向/后向断言

    待填坑
    

    条件表达式

    (?(condition)yespattern
    opattern)
    

    函数

    匹配: preg_match(pattern, string[, captured]);
    
    替换: preg_replace(pattern, replacement, subject[, limit]);
    
    拆分: preg_split (pattern, string) (pattern表示分割块)
    
    过滤数组: preg_grep (pattern, array) 返回给定模式匹配的所有元素、
    
    构造指定正则表达式: preg_quote (string );
  • 相关阅读:
    ThinkPHP框架知识(比较全的知识)
    利用smarty模板(登录、有关信息操作等功能)
    从零开始学习Node.js例子七 发送HTTP客户端请求并显示响应结果
    从零开始学习Node.js例子六 EventEmitter发送和接收事件
    从零开始学习Node.js例子五 服务器监听
    从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
    从零开始学习Node.js例子四 多页面实现数学运算 续一(使用connect和express框架)
    从零开始学习Node.js例子四 多页面实现数学运算
    从零开始学习Node.js例子三 图片上传和显示
    从零开始学习Node.js例子二 文本提交与显示
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/5793457.html
Copyright © 2011-2022 走看看