Php 正则表达式-得到最后一次而不是第一次-为什么?
我对PHP中的注册表项有问题 我有这样的字符串:Php 正则表达式-得到最后一次而不是第一次-为什么?,php,regex,preg-replace,Php,Regex,Preg Replace,我对PHP中的注册表项有问题 我有这样的字符串: sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg 我能得到什么回报 cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg sdfsfds dsf
sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg
我能得到什么回报
cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"
为什么???你的正则表达式很贪婪。通过在非贪婪量词后添加
?
来使用非贪婪量词:
cid:.*?img\.jpg.*?\"
您的正则表达式是贪婪的,
*
将匹配最长的字符串。许多正则表达式方言允许*?
匹配尽可能短的字符串,或者您可以对其进行限制,使其不跨越特定的边界,例如使用cid:[^”>]*img\.jpg[^”>]*“
这:
/<img\s.*?\bsrc="cid:(.*?)".*?>/
//
其他答案都很好,但我给这个a+1来显示备选答案:cid:[^”>]*img\.jpg[^”>]*“
cid:.*?img\.jpg.*?\"
/<img\s.*?\bsrc="cid:(.*?)".*?>/