所以我有这个正则表达式:
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)
它的工作原理相同。