• 正则表达式 个人笔记


    #正则表达式
    
    ## 元字符
    常见的元字符
    
    - . 匹配换行以外的任意字符
    - \w 匹配字母或者数字、下划线、汉字
    - \s  匹配任意的空白字符
    - \d 匹配数字
    - \b 匹配单词的边界
    - ^ 匹配字符串的开始
    - $ 匹配字符串的结尾 
    - \s匹配任意的空白字符
    - \S 匹配任意的非空白字符
    
    ##字符转义
    - \\匹配 \
    - \. 匹配.
    - \* 匹配*
    - \+ 匹配 +
    - \^ 匹配^
    - \? 匹配?
    
    ##重复
    - * 表示重复0或者多次
    - + 表示重复1到多次
    - ? 表示重复0或者1次
    - {n}表示重复n次
    - {n,}表示至少重复n次
    - {n,m}表示重复n到m次
    ##反义
    - \W匹配任意不是字母 数字下划线 汉字的字符
    - \S 匹配任意不是空白符的字符
    - \D 匹配任意不是数字的字符
    - \B 匹配不是单词开头或结束的位置
    
    ##后向引用
    
    > 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。
    默认情况下,每个分组会自动拥有一个组号,
    规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。后向引用用于重复搜索前面某个分组匹配的文本 ###常见的分组方法 **捕捉** - **(exp)** 匹配exp 并捕获文本到自动命名的组里 - (?<name>exp) 匹配exp 并捕获文本到名称为name的组里也可以写成(?'name'exp) - (?:exp) 匹配exp 不捕获匹配的文本。也不给此分组标号 **零宽断言** - (?=exp) 匹配exp前面的位置 - (?<=exp) 匹配exp后面的位置 - (?!exp)匹配后面跟的不是exp的位置 > 只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面,也不会拥有组号 **注释** - 注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

      ---雷雷给的资料

    ##PHP中的正则函数--PCRE
    用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。
    
    pcre (perl compatible-兼容 regular expression)库提供的,使用`preg_`为前缀的函数
    - 在pcre中,通常将模式表达式包含在 `/` 之间,如 `/apple/` 
    - 正则中重要的概念:元字符、转义、模式单元(重复)、反义、引用和断言  
    
    ##元字符(meta-character)
    - `\A`  匹配字符串串首的原子
    - `\Z`  匹配………………串尾…………
    - `\b`  …………单词的边界  
    - 如:`/\bis/` 匹配头为is的字符串
    - `/is\b/` 匹配尾为is的字符串
    - `/\bis\b/`定界
    - `\B`   匹配除单词边界之外的任意字符
    - `\d`   匹配一个数字:等价于[0-9]
    - `\D`   匹配出数字以外任何一个字符;等价于`[^0-9]
    - `\w`   匹配一个英文字母,数字或下划线;等价于[0-9a-aA-Z_]
    - `\W`   匹配除英文字母、数字和下划线以外任何一个字符;等价于`[^0-9a-zA-Z_]`
    - `\s`   匹配一个空白字符;等价于`[\f\t\v]`
    - `\S`   匹配除空白字符以外任何一个字符;等价于`[^\f\t\v]`
    - `\f`   匹配一个换页符;等价于 `\x0c` 或 `\cL`
    - `\t`   匹配一个制表符;等价于`\x09` 或 `\cl`
    - `\v`   匹配一个垂直制表符;等价于`\x0b` 或`\ck`
    - `\oNN` 匹配一个八进制数字
    - `\xNN` 匹配一个十六进制数字
    - `\cC`  匹配一个控制字符
    
    ##模式修正符 (pattern modifiers)
    模式修正符在忽略大小写、匹配多行中使用特别多,掌握了这一个修正符,往往能解决我们遇到的很多问题  
    
    - `i`  可同时匹配大小写字母  
    - `M`  将字符串视为多行  
    - `S`  将字符串视为单行,换行符做普通字符看待,使 `.` 匹配任何字符  
    - `X`  模式中的空白忽略不计  
    - `U`  匹配到最近的字符串  
    - `e`  将替换的字符串作为表达使用  
    - 如 `/apple/i` 匹配apple 或Apple等,忽略大小写   
    
    
    ## PCRE的模式单元
    - `//1` 提取第一位的属性
    - `/^\d{2} ([\W])\d{2}\\1\d{4}$` 匹配 `12-12-3432`、`98/23/1123`、`23 23 2312` 等字符串,但是却不匹配 `12/23-2344` 的格式,**这是因为模式[\W]的结果'/'已被存储**,下个位置 `\1` 引用时,其匹配模式也是字符 `/`。  
    - 当不需要存储匹配结果时,使用非存储模式单元 `(?: )`
    - 如: `/(?:a|b|c)(D|E|F)\\1g/` 将匹配 `aEEg` 。在一些正则表达式中,使用非存储模式单元是必要的。否则,需要改变其后引用的顺序。上例还可以写成 `/(a|b|c)(C|E|F)\2g/`。  
    
    ##PCRE正则表达式函数
    	- preg_match() & preg_match_all()  
    	- preg_quote()
    	- preg_split()
    	- preg_grep()
    	- preg_replace()
    
    ## 实例
    	
    	//匹配action属性
    	$str = '';
    	$match = '';
    	preg_match_all('/\s+action=\"(?!http:)(.*?)"\s/', $str, $match);
    	print_r($match);
    	
    正则工具虽然强大,但是从效率和编写时间上讲,可能没有explode更直接。
    

      

  • 相关阅读:
    hdu 4777 树状数组+合数分解
    hdu5635 BestCoder Round #74 (div.2)
    hdu 5636 搜索 BestCoder Round #74 (div.2)
    hdu 5637 BestCoder Round #74 (div.2)
    hdu4605 树状数组+离散化+dfs
    hdu4521 线段树+dp
    hdu3340 线段树+多边形
    孜孜不倦,必能求索;风尘仆仆,终有归途。
    增加、删除类文件或者在一个类中增加、删除方法时,是不能够热部署到服务上的。这时候需要停止服务器重新部署后再启动,就不会出现上面的提示了。
    为什么jdk1.8不支持sql.append,该如何解决
  • 原文地址:https://www.cnblogs.com/linglingyang/p/4694386.html
Copyright © 2020-2023  润新知