浅谈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匹配网址的正则 几乎可以匹配任何网址
比较简单的 $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 正则匹配函数体
复制代码 代码如下: <?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正则匹配图片并给图片加链接详解
正则: 复制代码 代码如下: $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正则表达式中的非贪婪模式匹配
一般情况下,正则表达式的匹配是贪婪模式的,比如下面这个例子: 字符串:....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匹配多行的正则表达式分析
复制代码 代码如下: <table> <tr><td>aaaa</td></tr> <tr><td>bbbb</td></tr> <tr><td>cccc</td></tr> <tr><td>dddd</td></tr> </table> 像这种的文本,用PHP的正则表达式怎么匹配?? 我最初
-
关于php正则匹配汉字的方法介绍
php正则匹配汉字! /^[\x{4e00}-\x{9fa5}]+$/u 以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式 大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些细微的出入,稍不注意就得不到正确的结果. 下面是utf-8编码的例子:$str = "汉字";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {
-
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不匹配的字符: 元字符包括: +, *,? 元字符理解起来容易混淆,所以我在后面做了代码结果
-
php用正则表达式匹配URL的简单方法
在PHP的官网上看到的parse_url()函数的替代方案.结果和parse_url()函数差不多,是使用正则实现的.URI 是 Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位. 对象分组: 复制代码 代码如下: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?12 3
随机推荐
- Ionic如何创建APP项目
- datatable行转列示例分享
- 详解Angular之constructor和ngOnInit差异及适用场景
- Spring项目里将SQL语句写在.sql文件中的方法
- .net cs后台刷新aspx页面的四种方式
- c# indexof 用法深入理解
- C++ 实现静态链表的简单实例
- Android ActionBar制作时钟实例解析
- 故障的机器修好后重启,狂拉主库binlog,导致网络问题的解决方法
- js如何实现淡入淡出效果
- 详解JS中的attribute属性
- js 阻止子元素响应父元素的onmouseout事件具体实现
- VBS实现将字符串写入剪切板的实现代码
- JQuery设置和去除disabled属性的5种方法总结
- JavaScript中继承用法实例分析
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
- js关于字符长度限制的问题示例探讨
- 五板斧封杀Windows默认共享
- COLORREF,COLOR,RGB,CString的转化总结分析
- Android通过ConnectivityManager检查网络状态