定界符号
多种都可以,常用为//

原子
最小的一个匹配单位 (放在定界符中),在一个正则表达式中,至少要有一个原子
1,打印字符(a-z A-Z 0-9 ~!@#$%^&*()_+...)和非打印字符
2, 代表一类字符
\d :任意一个数字 [0-9]
\D :任意一个非数字 [^0-9]
\w :任意一个字 a-z A-Z 0-9 _ [a-zA-Z0-9_]
\W :任意一个非字 [^a-zA-Z0-9_]
\s :代表任意一个空白 [\t\n\f\v]
\S :代表任意一个非空白 [^\t\n\f\v]

[\x{4e00}-\x{9fa5}]:代表所有汉字,但是需要配合模式修正符u使用,不然会报错

3,自定义原子表
[fws3] :fws3任意一个字符
[^1-9a-z] :非1-9 a-z的任意一个字符
[2-9x] :2-9或者x的任意一个字符
4,点(.) 能代表所有任意一个字符

元字符
不是单独使用的,是用来扩展和限定原子的 (写在定界符号中)
* 用来修饰其前面的原子可以出现0个或多个(任意次) {0,}
+ 用来修饰其前面的原子出现1次或多次 {1,}
? 用来修饰前面的原子出现0次或1次 {0,1}
{n} 用来修饰其前面的原子出现n次
{n,m} 用来修饰其前面的原子出现n到m次,包括n和m
{n,} 用来修饰其前面的原子至少出现n次,包括n
| 是或的关系 ,表示它两边的原子,只要一个出现就可以了,但是 | 优先级是最低的
^ 或 \A 表示必须以什么开始,这个必须写在正则表达式的最前面
$ 或 \Z 表示必须以什么结束,这个必须写在正则表达式的最后面
\b 单词边界
\B 不是单词边界的部分

模式修正符 (单个字符)
1,模式修正符写在定界符号 ,放在右边 "/go*gle/i"
2,模式修正符号,一个字符就是一个功能,可以组合使用
作用:
修正正则表达式的解释,或扩充正则表达式的功能
i : 不区分大小写
s : 原子. 可以匹配换行符(\r)
x : 去除正则表达式里的空白
U :让 原子. 变得不贪婪 (在. 后面加? 也可以取消贪婪模式,即.*? 或.+?)

u:utf8编码。匹配汉字时使用
其他符号

() (括号)
1,改变优先级
2, 将小原子变成大原子
3,子模式,整个表达式是一个大的模式,小括号中是每个独立的子模式
4,反向引用
$preg = '/title\=\"(.+?)\"\>(\\1)\<\/a\>/'; //  \\1:引用匹配的第一个子模式的内容

\1引用前面括号里的模式,即第一个模式 (?:xxx)使括号失去3,4功能

\ (转义字符)
1,可以将有意义的字符转成没有意义的原子字符 \^ \. \+ \' \" \?
2, 可以将没有意义的字符转成有意义的原子 \t \cx \f \n \r \v
3, 加上 \也没意义的字符,加不加\都没区别 \_ \q

实例
匹配网址
$reg = "/(https?|ftps?)\:\/\/(www|mail|bbs)\.(.+?)\.(com|cn|net)([\w\-\/\.\=\?\&\%]*)?/i";

preg_match("/^([\x{4e00}-\x{9fa5}]|\w|\_|\-){2,18}$/u",$_GET['name'] )

匹配邮箱
$reg = "/\w+([+-.]\w+)*@\w+([-.]\w+)*/";

函数

正则的查找
preg_match(pattern, subject ,data); //查找一个
preg_match_all(pattern, subject, data); //查找所有

正则的分割
preg_split(pattern, subject);

正则的替换
preg_replace(pattern, replacement, subject);

//一些心得

编码的问题,如果正则表达式和内容编码不同,会导致匹配不出,这时要将正则表达式\内容 转码

iconv('utf-8','gbk','/\&pn\=73\"\>尾页\<\/a\>/')

php preg正则表达式的组成部分的更多相关文章

  1. php preg正则表达式

    Note: 反斜线在单引号字符串和双引号字符串 中都有特殊含义,因此要匹配一个反斜线, 模式中必须写为 ”\\\\”. 译注: “/\\/”, 首先它作为字符串,反斜线会进行转义, 那么转义后的结果是 ...

  2. Regular Expression(正则表达式)之邮箱验证

    正则表达式(regular expression, 常常缩写为RegExp) 是一种用特殊符号编写的模式,描述一个或多个文本字符串.使用正则表达式匹配文本的模式,这样脚本就可以轻松的识别和操作文本.其 ...

  3. python 详解正则表达式的使用(re模块)

    一,什么是正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件 ...

  4. PHP正则表达式笔记和实例

    转自:  https://www.cnblogs.com/yafei236/p/4168290.html 本文主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己 ...

  5. Python学习笔记 - day10 - 正则表达式

    正则表达式 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样 ...

  6. PHP正则表达式考察点

    正则表达式的作用 分隔.查找.匹配.替换字符串 正则表达式的组成部分 分隔符 "/" . "#" . "~" 通用原子 \d : 十进制的0 ...

  7. Python - 正则表达式 - 第二十二天

    正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单 ...

  8. Hive正则表达式

    正则表达式基本语法 用圆括号将所有选择项括起来,相邻的选择项之间用|分隔.但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用. 其中 ?: 是非捕获元之一,还 ...

  9. PHP正则表达式核心技术完全详解 第1节

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 B站视频 : Bilibili.com 个 ...

随机推荐

  1. GYCTF ezupload

    上传一句话,没有任何过滤 菜刀连接后,读取flag文件 bash -c/readflag >tmp cat tmp 上面是非预期的解法.应该是题出问题了.看了一个师傅的blog,看源码,发现预期 ...

  2. Codeforces Round #614 (Div. 2) D

    变色失败 只加8分 距离变色只差5分 B题没想到那么简单,结论秒猜,不敢交,傻傻验证5分钟. C题也想了码了好一会儿,我动态维护set做的. 1小时3题,整体难度好像没以前那么大了?(虽然也不强,但比 ...

  3. asp.net core 配置文件动态更新

    IOptions<T> //站点启动后,获取到的值永远不变 IOptionsSnapshot<T> //站点启动后,每次获取到的值都是配置文件里的最新值 (reloadOnCh ...

  4. 封装 axios

    大家是否有印象,在开发项目中,我们往往会把axios给封装起来,写在一个js文件夹里,最后引入的也是js文件夹,而不是直接对axios进行操作,那为什么? 1. 如果一个组件需要请求数据,就要用到ax ...

  5. @Configuration@Bean

    https://blog.csdn.net/u014199143/article/details/80692685 @Configuation等价于<Beans></Beans> ...

  6. c++中sort基础用法

    用法一:数组排序 对一个数组进行升序排序 #include <algorithm> #include <iostream> #include <cstdio> us ...

  7. PHP返回json数据为null

    文件编码非utf-8,导致json_encode()返回false:最后前台ajax接收不到数据

  8. (转)classload和class.forname()区别

    转自:http://carl-java.iteye.com/blog/978680 java中class.forName和classLoader都可用来对类进行加载.前者除了将类的.class文件加载 ...

  9. SpringBoot学习- 5、整合Redis

    SpringBoot学习足迹 SpringBoot项目中访问Redis主要有两种方式:JedisPool和RedisTemplate,本文使用JedisPool 1.pom.xml添加dependen ...

  10. 开放系统互联(OSI)模型

    开放系统互联(OSI)模型 是由国际标准化组织(ISO)于1984年提出的一种标准参考模型,是一种关于由不同供应商提供的不同设备和应用软件之间的网络通信的概念性框架结构.它被公认为是计算机通信和 in ...