PHP正则-贪婪匹配(最大匹配) 和最小匹配的问题。

Python正则表达式匹配最大数字 现在问题来了,如何从字符串中匹配最大数字呢?其实可以将所有的数字都匹配出来,然后再取最大值即可。在文本处理中,经常会需要从字符串中抽取数字。使用Python正则表达式是一个非常好的选择。需要注意的是,如果字符串中存在小数、负数等情况,上述代码可能无法正确处理。此时可以针对具体的需求进行相应的修改。表示匹配前面的表达式至少 m 次,至多 n 次。这些都是正则表达式中常见的语法。函数从字符串中匹配所有数字。在正则表达式中,可以使用字符集合。函数将数字转换为整型,最后使用。表示匹配数字0到9。 阅读详情

贪婪匹配(最大匹配) 和最小匹配的问题。

在抓取链接地址时,使用以下正则时发现,当在<a href="XXX">链接标题</a> 链接标题中含有HTML代码时,不能抓取到地址。
/<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>([^>]+)<//a>/i
尚若换成以下方式
/<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>(。+)<//a>/i
则不能抓取到你需要的链接数据,默认情况下,perl使用的是贪婪匹配模式,也就是尽可能多的匹配数据。
如:下面的脚本打印出“matched defgabcdef”,因为它尽可能多地匹配模式,直至结尾的‘g’。

$data = 'abcdefgabcdefg';
$data =~ /abc(.+)g/i;
print "matched ";

要改变匹配特点,只须简单地在量词(加号[+]或星号[*])后面加一个问号(?)即可。在上面的程序中把模式改为在‘+’之后包含一个‘?’。

$data =~ /abc(.+?)g/i;

输出变成“matched def”,因为模式不再贪婪,而在允许模式匹配的同时匹配最少数目的字符。

对于可能得到的匹配多于期望的匹配的情况,最小匹配是必要的。

改成以下正则:
/<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>(.+?)<//a>/i
则可以抓取到需要的链接.

 

文章来源地址为:http://www.lampba.com/home-space-uid-4-do-blog-id-22.html

最小权重完美匹配问题算法的Java实现 寻找增广路径:使用增广路径算法(Augmenting Path Algorithm)来查找增广路径,直到无法找到新的增广路径为止。假设二分图的左侧顶点集合为A,右侧顶点集合为B,权重矩阵为weight[A.size()][B.size()],其中weight[i][j]表示顶点A[i]和顶点B[j]之间的边的权重。给定一个带权重的二分图,要求找到一种完美匹配,使得匹配边的总权重之和最小。对于增广路径上的匹配边,将其移出匹配。计算总权重:遍历匹配集,计算匹配边的总权重之和,即为最小权重完美匹配的结果。 阅读详情

相关推荐

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载)

关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系

qq_33328642的博客 5859

Java正则表达式匹配模式[贪婪型、勉强型、占有型]

对于这三种匹配模式也有叫: “最大匹配Greedy”“最小匹配Reluctant”“完全匹配Possessive”。现在将我对这三种匹配模式的理解写出来,并提供一些例子供大家参考。 1、Greediness(贪婪型): 最大匹配 X?、X*、X+、X{n,}都是最大匹配。例如你要用“&lt;.+&gt;”去匹配“a&lt;tr&gt;aava &lt;/tr&gt;abb”,也许你所期待的结...

我是传奇 411

DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided、Dimm

DDR的Controller、Channel、Chip、Bank、Rank、Row、Column、Sided、Dimm

张飞online博客 2万+

正则-贪婪匹配(最大匹配) 和最小匹配的问题。

贪婪匹配(最大匹配) 和最小匹配的问题。在抓取链接地址时,使用以下正则时发现,当在链接标题 链接标题中含有HTML代码时,不能抓取到地址。/]+href=[/"/]{0,1}([^>/"//s]+)[/"/]{0,1}[^>]*>([^>]+)/i尚若换成以下方式/]+href=[/"/]{0,1}([^>/"//s]+)[/"/]{0,1}[^>]*>(。+)/i则不能抓取到你需

fafa211的专栏 1万+

ComfyUI 的 LoRA 训练:秋叶 LoRA-scripts 参数设置与测试方法详解

秋叶 LoRA-scripts 的参数设置需结合理论(如模型原理、优化器机制)和硬件条件(显存、算力),新手可先按推荐值起步,再逐步调整。测试时,loss 值帮你判断训练是否正常,XYZ 图表法帮你找到最佳使用参数。掌握这些知识,你就能避开 LoRA 训练的常见坑,从 “盲目调参” 变为 “精准训练”。

2301_78150483的博客 2402

雷电模拟器+Auto.js避坑指南:用桥接模式解决PC与模拟器连接超时问题

本文详细解析了雷电模拟器与Auto.js联调中的桥接模式应用,解决PC与模拟器连接超时问题。通过桥接模式配置、高频故障排查及多开环境下的高阶配置,提升开发效率与稳定性,特别适合需要稳定网络连接的Auto.js开发者。

weixin_28836989的博客 632

正则表达式:最大匹配与最小匹配

PHP正则配批的脚本如下 &lt;?php    $mode="/abc(.*)g/i";    $str="abcdefgabcdefg";    preg_match($mode,$str,$res);    echo $res[0];    ?&gt;   打印出“abcdefgabcdefg”,因为它尽可能多地匹配模式,直至结尾的‘g’。 要改变匹配特点,只须简单地在...

weixin_34166847的博客 1278

comfyui中的k采样器报错Given groups=1, weight of size [320, 4, 3, 3], expected input[2, 8, 96, 54] to have 4

求助大佬!!!我运行comfyui的时候,k采样器变紫,同时报错显示:

M1226401728的博客 5180

php禁止贪婪,PHP正则表达式核心技术完全详解 第11节 贪婪匹配与禁止贪婪

作者:极客小俊 一个专注于web技术的80后你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人!极客小俊@开源中国,官方首发原创博客: GeekerJun PHP正则表达式中的贪婪匹配与 (禁止贪婪)贪婪匹配什么是贪婪匹配呢? 废话不多说 先看一段代码案例把 如下:$string='aaaaaaabbbbbbbbbbbbccccccc';//如下$pattern='/ab+/';//或...

weixin_28890831的博客 443

javascript 酷炫时钟

javascript 酷炫时钟

liuhao9999的博客 631

华为OD机试2025C卷-双十一最大花费金额[100分](Java_Python3_C++_C语言_JsNode_Go)实现100%通过率

双十一最大花费金额 - 动态规划解法 摘要:本文介绍了华为OD机试中"双十一最大花费金额"问题的动态规划解法。该问题要求在给定N件商品价格和优惠券面额X的情况下,选择若干商品使总花费不超过X且尽可能大。核心解法采用布尔型动态规划数组,记录每个金额是否可被拼出。算法时间复杂度为O(N*X),空间复杂度为O(X)。通过倒序遍历避免重复选择同一商品,最后从X向下查找第一个可达金额作为答案。文中提供了C++和Java的实现代码,并解释了与经典0-1背包问题的关系。 关键点: 问题本质是0-1背包/子集和问题的变体

2503_91057718的博客 46

php正则匹配sg-nc-wap_php正则贪婪匹配与非贪婪匹配一些例子

http://www.111cn.net/phper/210/55600.htm贪婪模式匹配的原则是:在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交给正则表达式的下一个匹配字符,当之后的匹配失败的时候,再回溯,进行匹配。它会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发现匹配的...

weixin_39630182的博客 161

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

你见过这些正则表达式中奇奇怪怪的匹配模式吗 ? 贪婪匹配、懒惰匹配 、禁止贪婪匹配!

一次性讲懂贪婪匹配、懒惰匹配 、禁止贪婪匹配 !

极客小俊 728

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第11节 贪婪匹配与禁止贪婪...

作者:极客小俊 一个专注于web技术的80后我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!极客小俊@知乎,官方首发原创文章博客: 极客小俊GeekerJunPHP正则表达式中的贪婪匹配与 (禁止贪婪)贪婪匹配什么是贪婪匹配呢? 废话不多说 先看一段代码案例把 如下:$stringphp正则表达式默认就是贪婪的 解决贪婪匹配 的办法就是用 ? 号 所以阻止贪婪一般加? 来解决 ...

weixin_39610678的博客 117

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php正则贪婪,PHP_正则表达式(regex) 贪婪模式、懒惰模式使用方法,正则表达式贪婪匹配模式,对 - phpStudy...

正则表达式(regex) 贪婪模式、懒惰模式使用方法正则表达式贪婪匹配模式,对于初学者,往往也很容易出错。有时候需要匹配一个段代码内容,发现匹配与想要不一致。发现原来,跟贪婪模式有关系。如下,我们看下例子:什么是贪婪模式字符串有: “abdbcd”,我们想匹配…内容,正则表达式如下:1、h3开头与结尾,”待添加” 都作为普通字符2、中间可以出现任意字符,个数可以是0个或者多个,正则表达式可以用:....

weixin_28846405的博客 404

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php正则贪婪匹配与非贪婪匹配一些例子

http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交给正则表达式的下一个匹配字符,当之后的匹配失败的时候,再回溯,进行匹配。它会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发...

weixin_34335458的博客 265

正则表达式贪婪与非贪婪模式

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab。

luxideyao的专栏 434

贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。 $str = '{{a}}{{b}}';preg_match('/{{.*}}/',$str,$match);print_r($match);//Array ( [0] =&gt; {{a}}{{b}} )非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配。 $str = '{{a}}{{b}}’;pre...

songtaiwu的博客 627

揭秘PHP正则表达式陷阱:5个常见错误及高效避坑方案

掌握PHP正则表达式用法,避开常见陷阱。详解5个典型错误及解决方案,涵盖字符串验证、替换与提取场景,提升代码稳定性与执行效率。实用技巧值得收藏。

VarChat的博客 1009

php 正则 回溯,PHP正则表达式的效率 回溯与固化分组

上文中,我们聊到了一点关于PHP中(NFA PCRE)正则表达式匹配优先量词,忽略优先量词的匹配原理了。那么上文留下的问题,您的答案是什么呢?先来看下问题。字符串$str = '123456';正则表达式为$strRegex1 = '%.+%';$strRegex2 = '%.+?%';$strRegex3 = '%(?:(?!).)+%';这三个正则,分别会造成几次回溯呢??答案:$strReg...

weixin_36454562的博客 128

java正则表达式 勉强匹配_Java 正则表达式匹配模式(贪婪型、勉强型、占有型)

Greediness(贪婪型):最大匹配X?、X*、X+、X{n,} 是最大匹配。例如你要用 “” 去匹配 “aaava abb”,也许你所期待的结果是想匹配 “”,但是实际结果却会匹配到 “aava 。在 Greediness 的模式下,会尽量大范围的匹配,直到匹配了整个内容,这时发现匹配不能成功时,开始回退缩小匹配范围,直到匹配成功String test = "aaava abb ";Stri...

weixin_39781143的博客 210

正则表达式, 贪婪模式

2018-2-28 10:15:09 星期三 好几年没怎么用过正则了, 正则有一个常见的用法就是非贪婪模式 方法一: ? 在 . + 和 * 之后 表示非贪婪匹配; *、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。 这和 ? 本身代表0次或1次的限制有关 . 除了换行符外的任意字符(可用修饰符/s使之匹配换行符)...

weixin_30435261的博客 82

php 正则表达式测试_php正则表达式基本知识与应用详解【经典教程】

本文实例讲述了php正则表达式基本知识与应用。分享给大家供大家参考,具体如下:概述正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语言基本上都有正则表达式,如JavaScript、Java等。其实,只有了解一种语言的正则使用,其他语言的正则使用起来,就相对简单些。文本主要围绕解决下面问题展开。① 有哪些常用的转义字符② 什么是限定符与定位符...

weixin_34847099的博客 263
上一篇: 谈谈PHP闭包(Closure)的使用
下一篇: 了解php中die(),exit(),return的区别
Lankecms
博客等级 码龄15年 14粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值