[问题] 正规表达式求解

楼主: mydoc (成为守护神)   2015-09-10 19:29:40
我用的是PHP,现在正在写一个网页,
但架构不是佷好,所以必须在Content内文中捞回有关于<img src="XXX">的XXX部份来用
好死不死的给我乱试试到了如
$str = "我爱你爱到没<img src='257.jpg'>人要1234要不要由我来说明接下来要做什么
?<img src='123.jpg'>";
$str= preg_replace("/[^imgsrc=']+jpg{1}/","",$str);
出来的结果是
我爱你爱到没<img src=''>人要1234要不要由我来说明接下来要做什么?<img src=''>
但我无论再把[]整组括起来也没办法做到XXX的部份....所以上来请问这如何解套?
本来在车上滑手机滑到PHP板爬文爬到这边来,又很顺便的看到有一个中文介绍表达式的网
但我对手机的操作极生手,所以忘记是滑到哪一篇文下面的推文是该大侠的介绍,
本想回家细阅的结果变成现在伸手牌(QAQ)
我完全不能理解正规表达式,短一点的还好,一长起来就很难控制了
希望各位能解惑,谢谢
作者: LPH66 (-6.2598534e+18f)   2015-09-10 19:36:00
[^...] 不是 "非里面这字串", 而是 "非里面这几个字"你应该要用 (?!...) negative lookahead "这里没有这东西"唔, 我看错需求了...你要的应该是 (?<=...)positive lookbehind "刚才看过这东西"也就是 /(?<=img src=')[^']+/或者你就干脆全部抓起来 /img src='([^']+)'/ 再用 \1 代换取代字串里写 \1 就是第一组 ()我没搞错的话后者应该效率会好一些
作者: pttnews (PTT新闻)   2015-09-25 21:16:00
我没写过PHP, 你可以先用<img([\ ])+(src|SRC)([\ ])*=([ ])*(\'|\")[\w]+\.[\w]+算了我用回文

Links booklink

Contact Us: admin [ a t ] ucptt.com