我对reg ex有疑问。用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:'和'“&gt;'之间的所有内容并用其他东西替换它。 这是我的注册表:
cid:.*img\.jpg.*\"
我得到什么回报??
cid:sdfsdf/img.jpg@23232"> sdfd sfdhg sdjhg sdfsfds dsfdsh kj <img src="cid:sdfsdf/img.jpg@23232"
双重
cid:sdfsdf/img.jpg@23232
为什么?
答案 0 :(得分:3)
你的正则表达式是贪婪的,.*
将匹配最长的字符串。许多正则表达式方言允许.*?
代替匹配最短的字符串,或者您可以限制它以使其不跨越特定边界,例如与cid:[^">]*img\.jpg[^">]*"
答案 1 :(得分:2)
你的正则表达式是贪婪的。使用非贪婪量词,在它们之后添加?
:
cid:.*?img\.jpg.*?\"
http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification
答案 2 :(得分:0)
你的意思:
/<img\s.*?\bsrc="cid:(.*?)".*?>/