所以我有这个正则表达式:
https?://[^/\s]+/\S+\.(?:jpg|jpeg|gif|png)
我在本文中使用它:
[url=http://www.gameoverse.com/wp-content/uploads/2015/05/Nintendo-World-Championship-2015-News-1024x576.jpg]http://www.gameoverse.com/wp-content/uploads/2015/05/Nintendo-World-Championship-2015-News-1024x576.jpg[/url]
En tråd för oss som sitter uppe i natt och vill diskutera vad som händer i tävlingen.
Det ska tydligen spelas oannonserade spel så det här ska bli kul :D
Länk till sändningen:
[url=http://www.gonintendo.com/stories/235824-nintendo-world-championships-2015-treehouse-live-pre-show-full]http://www.gonintendo.com/stories/235824-nintendo-world-championships-2015-treehouse-live-pre-show-full[/url]
问题是它需要http://和.jpg之间的所有内容。所以在这种情况下我得到了一个错误的网址。
目前匹配
http://www.gameoverse.com/wp-content/uploads/2015/05/Nintendo-World-Championship-2015-News-1024x576.jpg]http://www.gameoverse.com/wp-content/uploads/2015/05/Nintendo-World-Championship-2015-News-1024x576.jpg
但我希望它匹配
http://www.gameoverse.com/wp-content/uploads/2015/05/Nintendo-World-Championship-2015-News-1024x576.jpg
任何人都可以提供这样做的方法吗?
答案 0 :(得分:2)
您需要将[^/\s]+
更改为懒惰,而不是贪婪,因此它只匹配第一个.
。在最后添加?
。
注意:[^\s]
是每个不是空格的字符,而/
不是空格,因此您可以将其更改为[^\s]
。此外,在大多数语言中都有一个快捷方式:\S
(无括号!)。通过此更改,您的正则表达式变为:
https?://\S+?/\S+?\.(?:jpg|jpeg|gif|png)
它完全相同。另外,你真的不需要用斜杠分隔两个部分 - 只需要做
https?://\S+?\.(?:jpg|jpeg|gif|png)