美文网首页
关于正则表达式

关于正则表达式

作者: hello大象 | 来源:发表于2018-05-31 18:14 被阅读0次

正则表达式的作用

分隔、查找、匹配、替换字符串

正则表达式的组成部分

分隔符

"/""#""~"

通用原子

  • \d : 十进制的0-9

  • \D : 对\d取反:除了0-9

  • \w : 数字、字母、下画线

  • \W : 除了数字、字母、下画线

  • \s : 空格、换行符、换页符、回车符、字表符

  • \S : 除了空格、换行符、换页符、回车符、字表符

常用原子符

  • . : 除了换行符之外的任意字符

  • * : 匹配前面内容出现0次、1次或多次

  • ? : 匹配前面内容出现0次或1次

  • ^ : 开头

  • $ : 结尾

  • + : 匹配前面内容出现1次或多次

  • {n} : 出现n次

  • {n,} :出现大于等于n次

  • {n,m} : 出现大于等于n次 小于等于m次

  • [] : 集合,匹配中括号里面的[abc]则是匹配a 或 b 或 c

  • () : 后向引用或当作整体

  • [^] : 取反[^abc]除了a 、除了b、 除了c

  • | : 或者

  • [-] : 表示范围

模式修正符

  • i : 不区分大小写

  • m : 多文本模式

  • s : 单行模式

  • U : 取消贪婪模式

  • x : 忽略模式中的空白符

  • A : 必须以该模式开头

  • D : 如果这个修饰符被设置, 模式中的元字符美元符号仅仅匹配目标字符串的末尾. 如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略

  • u : 进行utf-8匹配

后向引用

$str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/';
preg_replace($pattern,'\\1',$str);//这里\1代表的就是括号里匹配上的内容,也就是abc  

贪婪模式

$str = '<b>abc</b><b>bcd</b>';//匹配每一不b标签
$pattern = '/<b>(.*?)<\/b>/';//.*存在贪婪模式,会一直匹配到最后,加上问号后 取消贪婪模式,匹配一个之后再进行下一个匹配  
preg_replace($pattern,'\\1',$str);

//使用以下方法也可以取消贪婪模式
$pattern = '/<b>(.*)<\/b>/U';

正则表达式PCRE函数

  • preg_filter — 执行一个正则表达式搜索和替换

  • preg_grep — 返回匹配模式的数组条目

  • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码

  • preg_match_all — 执行一个全局正则表达式匹配

  • preg_match — 执行匹配正则表达式

  • preg_quote — 转义正则表达式字符

  • preg_replace_callback_array — Perform a regular expression search and replace using callbacks

  • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换

  • preg_replace — 执行一个正则表达式的搜索和替换

  • preg_split — 通过一个正则表达式分隔字符串

例子

写出一个正则表达式,取出页面中所有img标签中的src值

$str = '<img alt="xxx" src="aaa.jpg" />';
$pattern = '/<img.*?src=["\'].*?["\'].*?\/?>/';
/**
 * 分析
 * img的标签特性:有<img开头,中间可能有其他属性:所以有<img.*?
 * src标签:src=["\'].*?["\']  可能是以单引号或双引号
 * 后面可能还有别的属性:.*?
 * 以/> 或 >结尾: /?>
 * 最终拼接成:<img.*?src=["\'].*?["\'].*?\/?>
 **/

相关文章

  • 正则表达式入门

    正则表达式 关于正则表达式相信很多学计算机的人都听说过 尤其是做编程行业的人 那什么是正则表达式 正则表达式,又称...

  • 2018-11-02jmeter关联,正则表达式

    在线工具 一、Jmeter关联的方式 2、设置正则表达式提取器 三、关于正则表达式的举例说明 正则表达式: 1.取...

  • 2018-09-11 day17-正则表达式

    正则表达式 python关于正则的支持 提供内置模块re fullmatch(正则表达式, 字符串) - 判断字符...

  • 正则表达式 - 2017 - 完结篇

    ** 题记:接上回,我们说到了关于正则表达式的基本的语法,这次我们就来继续拓展正则表达式的内容,包括了正则表达式中...

  • 正则表达式笔记

    前几天写了一个很简陋的模板引擎,关于正则表达式,我整理了一下,仅供以后再忘记的时候参考~ 关于正则表达式(regu...

  • JavaScript中的正则

    正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象(RegExp)。 关于...

  • 正则表达式给数字添加“,”和“()”

    关于正则表达式有其他需求的,可在评论区留言

  • JavaScript 正则匹配的 Unicode 模式

    疑惑的 unicode 模式 前两天室友正在看 js 关于正则表达式的博客,发现 js 正则表达式中有个 u,可以...

  • linux之正则、三剑客(grep、sed、awk)

    关于正则表达式和三剑客: 1、什么是正则表达式? 作用和特殊字符一样。 正则表达式是为处理大量的字符串及文字而定义...

  • PHP正则表达式的应用

    关于PCRE的介绍以及实现正则表达式功能的所有说明,都可以在官方手册中看到:正则表达式(兼容 Perl) 一、认识...

网友评论

      本文标题:关于正则表达式

      本文链接:https://www.haomeiwen.com/subject/eyzqsftx.html