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

时间:2015-06-15 12:44:52

标签: python regex

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

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

1 个答案:

答案 0 :(得分:2)

您需要将[^/\s]+更改为懒惰,而不是贪婪,因此它只匹配第一个.。在最后添加?

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

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

它完全相同。另外,你真的不需要用斜杠分隔两个部分 - 只需要做

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

it works the same