php - 正则表达式 - 获取最后一次出现而不是第一次出现 - 为什么?

标签 php regex preg-replace

我的 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:”和“">”之间的所有内容并将其替换为其他内容。 这是我的注册表:

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

为什么?

最佳答案

你的正则表达式是贪婪的,.*将匹配最长的可能字符串。许多正则表达式方言允许使用 .*? 来匹配最短的可能字符串,或者您可以限制它,使其不会跨越特定边界,例如与 cid:[^">]*img\.jpg[^">]*"

关于php - 正则表达式 - 获取最后一次出现而不是第一次出现 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8151092/

相关文章:

php - 修剪字符串中的多个换行符和多个空格?

php - 使用数组比使用多个语句更快吗?

php - 如何比较 Yii2 ActiveDataProvider 中连接表的值

php - 试图从数据库中检索密码

php - Laravel 邮件奇怪的超时错误

java - 如何在 Java 中处理以下 PHP 正则表达式?

php - 如何自动更新数据库中的记录?

regex - JavaScript 正则表达式仅在前面有另一个字符时才匹配一个字符

正则表达式如何分割这个单词?

php - 替换两个单词之间可能有一个或多个任何类型的空格