正则表达式首先以jpg|jpeg|gif|png结尾



所以我有这个正则表达式:

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

任何人都可以提供一种方法来做到这一点吗?

示例:https://regex101.com/r/jE7oN8/1

你需要

把你的[^/s]+改成懒惰,而不是贪婪,所以它只匹配第一个.。在末尾添加?

备注:[^s]是每个不是空格的字符,/不是空格,因此您可以将其更改为 仅[^s] 。此外,在大多数语言中都有一个快捷方式:S(没有括号!通过此更改,您的正则表达式将变为:

https?://S+?/S+?.(?:jpg|jpeg|gif|png)

而且完全等价。此外,您真的不需要用斜杠分隔两个部分 - 只需执行即可

https?://S+?.(?:jpg|jpeg|gif|png)

它的工作原理相同。

最新更新