我一直在尝试将所有文件资源都放在HTML中。
我当前版本的正则表达式是
"[^']*'([^"]*)'[^']*" | "([^"]*)"
示例HTML(仅一部分):
<div style="background-image: url('/courses/UMASGRUPOBDEMO/document/learning_path/El_Contrato_de_Seguro-_Contenido_Teorico/video_pres_cto_seguro.jpg');display: block; margin-left: auto; margin-right: auto;"></div>
<img class="maximize"
src="/courses/CURSODESTINOPEQUENO/document/learning_path/LECCION_1_2_3_4_5_-_corta/Diapositiva01-29332.jpg" style="display: block; margin-left: auto; margin-right: auto;" />
迭代preg_match我可以得到:
但是preg_match_all只给我下一个:
进行实时测试
这有什么意义吗?可能我的正则表达式需要一些工作。
我对正则表达式没有多少经验。请帮帮我:)。
提前谢谢你!
添加了:
正则表达式实际上是这样的:
正如我所看到的,也许没有引号和双引号条件应该稍微触及以获得更好的正则表达式...
现在使用更长的HTML示例:http://www.phpliveregex.com/p/h74
<p><img class="maximize" src="/courses/UMASGRUPOBDEMO/document/learning_path/Diapositiva54/Diapositiva2.jpg" style="display: block; margin-left: auto; margin-right: auto;" alt="" /></p>
<div style="background-image: url('/courses/UMASGRUPOBDEMO/document/learning_path/El_Contrato_de_Seguro-_Contenido_Teorico/video_pres_cto_seguro.jpg');display: block; margin-left: auto; margin-right: auto;"></div>
<img class="maximize"
src="/courses/CURSODESTINOPEQUENO/document/learning_path/LECCION_1_2_3_4_5_-_corta/Diapositiva01-29332.jpg" style="display: block; margin-left: auto; margin-right: auto;" />
答案 0 :(得分:1)
请尝试使用此正则表达式:
"[^"']*'([^"']*)'[^"']*"|"([^"]*)"
您的原始正则表达式贪婪地从输入中的第二个'
到最后一个 "
之后拾取所有内容。
请注意,正则表达式中的*
和+
运算符 greedy 意味着他们将尽可能多地使用 来匹配。< / p>
您必须使用*?
或+?
<来限制应用这些运算符的内容(如上所述)或将其转换为支持它的正则表达式系统的非贪婪运算符: / p>
"[^']*?'[^"]*?'[^']*?"
(但是,最后一个仍会出现问题,例如使用<img src="foo" alt='bar' class="myimage" />
- 即使它不是'bar'
- 分隔字符串的一部分,也会抓取"