浅谈php正则表达式中的非贪婪模式匹配的使用
通常我们会这么写:
$str = "http://www.baidu/.com?url=www.sina.com/";
preg_match("/http:(.*)com/", $str, $matches);
print_r($matches);
结果:
Array ( [0] => http://www.baidu/.com?url=www.sina.com [1] => //www.baidu/.com?url=www.sina. )
非贪婪模式匹配:
$str = "http://www.baidu/.com?url=www.sina.com/";
preg_match("/http:(.*?)com/", $str, $matches);
print_r($matches);
结果:
Array ( [0] => http://www.baidu/.com [1] => //www.baidu/. )
简单的说只要在一个字符后面跟上限定个数的特殊字符,匹配就是非贪婪模式了。小伙伴们是否理解了呢?
相关推荐
-
关于php正则匹配汉字的方法介绍
php正则匹配汉字! /^[\x{4e00}-\x{9fa5}]+$/u 以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式 大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些细微的出入,稍不注意就得不到正确的结果. 下面是utf-8编码的例子:$str = "汉字";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {
-
PHP匹配多行的正则表达式分析
复制代码 代码如下: <table> <tr><td>aaaa</td></tr> <tr><td>bbbb</td></tr> <tr><td>cccc</td></tr> <tr><td>dddd</td></tr> </table> 像这种的文本,用PHP的正则表达式怎么匹配?? 我最初
-
php匹配网址的正则 几乎可以匹配任何网址
比较简单的 $str = ''; $isMatched = preg_match('/^^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+$/', $str, $matches); var_dump($isMatched, $matches); 几乎可以匹配任何网址: ^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\..])+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int
-
php正则表达式中的非贪婪模式匹配
一般情况下,正则表达式的匹配是贪婪模式的,比如下面这个例子: 字符串:....src="http://www.bloghome.cn/1.mp3" type="application/x-mplayer2" .... 要求的结果:http://www.bloghome.cn/1.mp3 如果匹配表达式写为:/src="(.*)"/,则得不到正确的结果,因为最后一个双引号的匹配是贪婪模式的. 解决办法:匹配表达式写为: /src="(.*
-
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
前言 最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例.感兴趣的朋友们可以参考学习. 实例代码如下 假设页面 1.html 的网页源代码是: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>一个含有 form 表单
-
php 正则匹配函数体
复制代码 代码如下: <?php $data = php_strip_whitespace('test.php'); //去掉注释,空格,换行(不包括字符串中的) echo $data; $data = preg_match_all(" / function\s+ #匹配function和后面的空格 [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* #匹配函数名 \(([^)]*?)\)\s+ #匹配函数参数,并且作为子模式捕获 \{ (.*?) \}(?=
-
php用正则表达式匹配URL的简单方法
在PHP的官网上看到的parse_url()函数的替代方案.结果和parse_url()函数差不多,是使用正则实现的.URI 是 Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位. 对象分组: 复制代码 代码如下: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?12 3
-
PHP正则匹配图片并给图片加链接详解
正则: 复制代码 代码如下: $newstext=preg_replace(preg_replace('/(<img[^>]+src\s*=\s*"?([^>"\s]+)"?[^>]*>)/im', '<a href="$2″>$1</a>', $newstext); 解说: 1.preg_replace和str_replace的区别: str_replace只是纯字符替换,而preg_replace才是正则替换
-
php中utf-8编码下用正则表达式如何匹配汉字
在javascript中,要判断字符串是中文是很简单的.比如: 复制代码 代码如下: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); } else { alert("该字符串不全部是中文"); } 想当然的,在php中来判断字符串是否为中文,就会沿袭这个思路: 复制代码 代码如下: <?php $str = "php编程&qu
-
PHP匹配连续的数字或字母的正则表达式
正则表达式的写法规则:"/规则需要写在2个斜杠中间/". (. :小数点)用于匹配除换行符之外的所有字符. (\s:反斜杠小写s)用于匹配单个空格符,包括tab键和换行符: (\S:反斜杠大写S)用于匹配除单个空格符之外的所有字符: (\d:反斜杠d)用于匹配从0到9的数字:也可以这样写:[0-9] (\w:反斜杠小写w)用于匹配字母,数字或下划线字符: (\W:反斜杠大写W)用于匹配所有与\w不匹配的字符: 元字符包括: +, *,? 元字符理解起来容易混淆,所以我在后面做了代码结果
随机推荐
- jquery实现界面无刷新加载登陆注册
- Linux ftp 命令行中下载文件get与上传文件put的命令应用详解
- JS对select控件option选项的增删改查示例代码
- [全兼容哦]--实用、简洁、炫酷的页面转入效果loing
- PHP定时任务获取微信access_token的方法
- C#从命令行读取参数的方法
- 当文本框的值发生改变时,触发事件,在IE中有效
- 当下中国人6大“劣根性”分析
- 一个简单的jquery进度条示例
- Ruby中的String对象学习笔记
- 浅谈Android App开发中Fragment的创建与生命周期
- yii2项目实战之restful api授权验证详解
- vue实现样式之间的切换及vue动态样式的实现方法
- 如何实现ls命令在Win7下正常运行
- 在Linux中使用Vundle管理Vim插件的方法
- ubantu 16.4下Hadoop完全分布式搭建实战教程
- 在小程序中使用Echart图表的示例代码
- Android基于IJKPlayer视频播放器简单封装设计
- 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
- Java集合定义与用法实例总结【Set、List与Map】