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 );
  • 相关阅读:
    CCF 小明放学 201812-2(简单模拟)
    CSP 小明上学 201812-1 (水题)
    201903-4 消息传递接口(队列模拟)
    Betsy's Tour 漫游小镇(dfs)
    Checker Challenge跳棋的挑战(n皇后问题)
    Money Systems 货币系统(母函数)
    中国剩余定理(模板+详解)
    Biorhythms(中国剩余定理(模板题))
    输入输出外挂(纯数字型)
    欧几里德(转)
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/5793457.html
Copyright © 2011-2022 走看看