如何用正则表达式解析<img rel="nofollow noreferrer" src>?

Lac*_*zar 4 regex

我需要一个聪明的正则表达式来匹配...这些:

<img src="..."
<img src='...'
<img src=...
Run Code Online (Sandbox Code Playgroud)

我希望匹配内部内容src,但当它被","或"无"包围时.这意味着<img src=..."或者<img src='...不能被接受.

任何想法如何将这3个案例与一个正则表达式相匹配.

到目前为止,我使用类似这样的东西("|'|[\s\S])(.*?)\1,我想要放松的部分是我[\S\s]用来匹配"缺失符号"的开头和结尾的hacky ....

Viv*_*ath 12

哇,我今天回答的第二个问题.

不要使用正则表达式解析HTML.使用HTML/XML解析器,您的生活将变得更加轻松.Tidy会为您清理HTML代码,因此您可以先通过Tidy运行HTML,然后再通过解析器运行HTML.除了santizing之外,一些基于整理的库将执行解析,因此您甚至可能不必通过另一个解析器运行它.

例如,Java有JTidy,PHP有PHP Tidy.

UPDATE

反对我更好的判断,我给你这个:

/<img\s+src\s*=\s*(["'][^"']+["']|[^>]+)>/

这仅适用于您的具体情况.即便如此,它也不会考虑转义"'图像源名称或>角色.可能还有许多其他限制.捕获组为您提供了图像名称(如果名称被单引号或双引号括起来,它也会为您提供这些名称,但您可以将它们除去).

  • 我们告诉你的是,这个任务不够简单,不能用一个小的正则表达式完成.如果是的话,你已经实现了它. (2认同)