用法

从某个字符抽取信息

用新文本替换匹配的文本

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

基础

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\nopattern)

函数

匹配: preg_match(pattern, string[, captured]);

替换: preg_replace(pattern, replacement, subject[, limit]);

拆分: preg_split (pattern, string) (pattern表示分割块)

过滤数组: preg_grep (pattern, array) 返回给定模式匹配的所有元素、

构造指定正则表达式: preg_quote (string );

基于PHP的正则表达式的更多相关文章

  1. 基于ε-NFA的正则表达式引擎

    正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍一想,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,<编译原理>一书中有一章专门讲 ...

  2. 基于java的正则表达式

    正则表达式概念 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描 ...

  3. 正则表达式基于JavaScript的入门详解

    关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他. 的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证.语法, ...

  4. 【转】java正则表达式

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...

  5. JAVA 正则表达式 (超详细)

    (PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中 ...

  6. 转载:JAVA 正则表达式 (超详细)

    在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用Java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x ...

  7. 关于pcre正则表达式库libpcre

    gcc 4.8中已经包含了std regex的头文件 可是没有实现,所以链接是失败的 gcc 4.9完整的支持了c++ 11的regex. 在4.9以前,可以寻求boost的regex. 不过,我更熟 ...

  8. 基于php常用正则表达整理(下)

    61        \n 匹配一个换行符.等价于 \x0a 和 \cJ.62        \r 匹配一个回车符.等价于 \x0d 和 \cM.63        \s 匹配任何空白字符,包括空格.制 ...

  9. 基于php常用正则表达整理(上)

    电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/ 基于p ...

随机推荐

  1. Promise 源码分析

    前言 then/promise项目是基于Promises/A+标准实现的Promise库,从这个项目当中,我们来看Promise的原理是什么,它是如何做到的,从而更加熟悉Promise 分析 从ind ...

  2. 浅淡!important对CSS的重要性

    SS中的!important是一个非常重要的属性,有时候发挥着非常大的作用,52CSS.com这方面的知识并不是非常多,我们看下面的文章,对它作比较感观的了解. 前几天写一些CSS代码的时候又难为我了 ...

  3. angularjs ng-repeat倒叙

    <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng ...

  4. Xshell和secureCRT

    作为一名测试人员,xshell和secureCRT用它们来查看日志.排查定位问题,用的时间长了总感觉只是摸着点皮毛,连这两个工具的名字以及它的工作原理都不清楚,就查了点资料来多了解下,虽然可能在日常工 ...

  5. jmeter中的响应断言

    断言就类似LoadRunner中的检查点.对上一个请求返回的信息,做字符串.数据包大小.HTML.XML.图片等做判断,确保返回的信息的准确性. jmeter的断言有好多,下面是一个响应断言 新建一个 ...

  6. Logcat不显示Application的解决办法

    Window - show view - devices - debug ----2014.12.1------ 只有在DDMS的device中显示进程名,logcat中的Application标签才 ...

  7. Unable to resolve target 'android-16'

    Just now when I imported the "android-support-v7-appcompat" to ADT,the console pointed out ...

  8. HihoCoder 1570 : 小Hi与法阵(简单几何)

    描述 小Hi喜欢大,而小Ho喜欢小.他们所在的城市(视为二维平面)有N座法阵.现在他们各选三座法阵,以三座法阵为顶点组成三角形,并站在所选三角形的重心位置:二人选择的法阵可以有相同的.小Hi选择面积最 ...

  9. [SDOI2012]任务安排

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2726 [算法] 此题与POJ1180非常相似 但是 , 此题中的t值可能为负 , 这 ...

  10. c++11 右值引用和移动语义

    什么是左值.右值 最常见的误解: 等号左边的就是左值,等号右边的就是右值 左值和右值都是针对表达式而言的, 左值是指表达式结束后依然存在的持久对象 右值是指表达式结束时就不再存在的临时对象区分: 能对 ...