奇怪的是,我没有找到任何具体回答这个问题的地方,我发现的所有其他堆栈溢出的东西都不完全正确.
我有一个正文我需要搜索图像网址,这并不意味着什么复杂,但基本上是这样的:
不
我使用的所有正则表达式都将在结果中包含"MORECONTENTHERE".地狱令人沮丧.我只想要之前没有附加任何内容的URL或之前添加的URL!
此外,我不想要任何HTML图像链接提取 - 我不是从HTML中提取这些.
任何正则表达式这样做?
编辑:
所以这就是我作为一个来源使用的:http://pastebin.com/dE2s1nHz
这是HTML,但我不想提及,因为我不希望别人这样做
https?://[^/\s]+/\S+\.(jpg|png|gif)
Run Code Online (Sandbox Code Playgroud)
https? 是"http"或"https":// 是文字的[^/\s]+ 不是"/"或空格/ 是文字的\S+ 什么都不是空间\. 是"."|结果:

以上内容取自RegexBuddy,用于Mac上的Wine."PCRE"相当于preg_*功能.表达式应该适用于大多数正则表达式.
这与以已知图像扩展名结尾的字符串匹配。
<?php
$string = "Oddly enough I haven't found anywhere that has answer this question specificly, all the other stack overflow things I've found aren't exactly right.
I have a body text I need to search through for image urls, this doesn't mean anything complex but basically things like:
http://www.google.com/logo.png
http://reddit.com/idfaiodf/test.jpg
NOT
http://reddit.com/sadfasdf/test.jpgMORECONTENTHERE
";
$pattern = '~(http.*\.)(jpe?g|png|[tg]iff?|svg)~i';
$m = preg_match_all($pattern,$string,$matches);
print_r($matches[0]);
?>
Run Code Online (Sandbox Code Playgroud)
输出
Array
(
[0] => http://www.google.com/logo.png
[1] => http://reddit.com/idfaiodf/test.jpg
[2] => http://reddit.com/sadfasdf/test.jpg
)
Run Code Online (Sandbox Code Playgroud)