案例一如下:

 $regex='/[\s\S]*/';
$str='lemon';
$matches=array(); if(preg_match($regex,$str,$matches)){
var_dump($matches);
} echo "<br/>"; $regex='/[\s\S]*?/';
$str='lemon';
$matches=array(); if(preg_match($regex,$str,$matches)){
var_dump($matches);
}

  第一个正则表达式匹配到lemon
  第二个为什么匹配不到?

答案:

第一个中的正则是[\s|\S]*,表示区配所有字符n次,属于贪婪模式重复区配,即尽可能多的区配字符串。所以会区配$str的所有内容。
第二个正则是[\s|\S]*?,比第一个多个个文号,?表示重复前面的0次或者一次。由于前面是*,这里*?就表示以勉强模式区配,它是尽可能的以最小的长度区配字符串,
由于*最小的是区配0次,那*?就只能区配0次了。换成+?的话就是区配1次。由于*?区配0次,所以就什么都没有了,是个长度为0的空字符串。
由上面的问题衍生出下面的疑问:
$regex='/[\s\S]*?abc/';
$str='lemonabc';
$matches=array(); if(preg_match($regex,$str,$matches)){
var_dump($matches);
}
为什么这个能匹配的到lemonabc?

答案:
这个是因为你有了截止字符abc,*?第一次开始向右区配直至找到abc开始的时候停止区配,由于你的lemonabc中包含abc,所以是去陪到abc为止,即整个字符串。
如果你的字符串是lemonabcde的话,区配的也是lemonabc,假如你的正则改成[\s|\S]*?abd的话,那区配的也是个长度为0的空字符串。因为没有找到后面的,那就区配最少的次数0次。

php中正则案例分析的更多相关文章

  1. Mybatis环境搭建中的案例分析 及 如果自己编写DAO接口的实现类

    Mybatis环境搭建中的案例分析public static void main (String[] args) throws Exception { //读配置文件 //第一个: 使用类加载器,只能 ...

  2. (转)linux top命令中各cpu占用率含义及案例分析

    原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...

  3. Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)

    前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...

  4. 线程高级应用-心得7-java5线程并发库中阻塞队列Condition的应用及案例分析

    1.阻塞队列知识点 阻塞队列重要的有以下几个方法,具体用法可以参考帮助文档:区别说的很清楚,第一个种方法不阻塞直接抛异常:第二种方法是boolean型的,阻塞返回flase:第三种方法直接阻塞. 2. ...

  5. SQL性能优化案例分析

    这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享. 这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集 ...

  6. CSS3-3D制作案例分析实战

    一.前言 上一节,介绍了基础的CSS3 3D动画原理实现,也举了一个小小的例子来演示,但是有朋友跟我私信说想看看一些关于CSS3 3D的实例,所以在这里为了满足一下大家的需求,同时也为了以后能够更好的 ...

  7. 个人作业-Week2 案例分析

    微软必应词典客户端的案例分析 第一部分 调研,评测 1)bug: 运行平台:iOS 10.0.2 必应词典版本:4.2.2 1. bug标题:词库加载错误 bug详细描述:学习界面中的经典词库出国考试 ...

  8. 【MySQL】排序原理与案例分析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...

  9. 个人作业-Week2:案例分析

    截止时间:2016年9月25日24:00. 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课? 都不对, 软件工程有 ...

随机推荐

  1. linux操作系统1 Linux入门

    知识内容: 1.操作系统简介 2.Linux操作系统简介 3.Linux安装 4.Linux各大发行版本介绍 一.操作系统介绍 1.为什么需要操作系统 现代的计算机系统由处理器,主存,硬盘,键盘,鼠标 ...

  2. linux系统下修改文件夹目录权限-chmod

    Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何修改Linux文件-文件夹权限.以主文件夹下的一个名 ...

  3. linux实时流量监控

    在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...

  4. 9.简单理解ajax

    #### post 请求需要发送一个header setRequestHeader('Content-Type','application/x-www-form-urlencoded') post请求 ...

  5. OpenACC 异步计算

    ▶ 按照书上的例子,使用 async 导语实现主机与设备端的异步计算 ● 代码,非异步的代码只要将其中的 async 以及第 29 行删除即可 #include <stdio.h> #in ...

  6. PPT怎么母版怎么修改及应用

    打开一个PPT,假设我要建一个母版(目的就是母版容易全部修改,不用同样的内容一个一个改) 然后点击如图"视图"+"幻灯片母版" 然后就会出现一个这样的工具栏界面 ...

  7. Spring boot&Mybatis 启动报错 Failed to auto-configure a DataSource

    *************************** APPLICATION FAILED TO START *************************** Description: Fai ...

  8. RAID0+1 RAID5 性能比较

    我想大家都很清楚,存储设备性能的好坏除了与处理器(CPU).缓存等有关之外,还与RAID组中的磁盘数量有很大的关系.按RAID技术的特点,相同磁盘数量下的RAID0性能高于RAID5,RAID1的性能 ...

  9. OTS parsing error: invalid version tag woff和ttf文件被Filter拦截

    从服务器下载的字体文件放在本地,执行无法展示iconfont,浏览器控制台报出 Failed to decode downloaded font: http://127.0.0.1:8080/mhr/ ...

  10. sessionpage1

    session1 <%@page import="java.text.SimpleDateFormat"%> <%@ page language="ja ...