我是一个完整的正则表达式菜鸟,今天一直在努力解决这个问题。我有一些内容与其中的网址。我想简单地提取这些网址,但我无法选择到网址的末尾。
我这里有一个代码示例: https://regex101.com/r/2GfzWO/1
如您所见,它没有正确选择,并且根本没有选择最后一个网址。太可怕了:/
如果有人能指引我朝着正确的方向前进,我会非常感激
更新
单独不依赖于上述链接,我想我也会在这里添加正则表达式。以下是此问题的原始正则表达式:
/(?:http|ftp)s?:\/\/\S*\.\S*(?="|<)/gi
以下是我正在测试的内容:
Here is some content and url <p>http://www.something.com/index.html</p>
<p>Some more content <a href="http://www.something.com/some/path/here.html">http://www.something.com/some/path/here.html</a></p>
Some more text http://www.something.com/something/somethingelse.html content
continued...
答案 0 :(得分:1)
在这种情况下,你需要一个懒惰的匹配而不是贪婪的匹配。通过添加&#39;?&#39;紧挨着第二个&#39; *&#39;在你的正则表达式中,它会起作用。
答案 1 :(得分:0)
看起来我能够通过为我的积极前瞻添加更多替代方案来解决它:
(?:http|ftp)s?:\/\/\S*?\.\S*?(?="|<| |\n|\r|$)
因此它将检测换行符/回车符\ n \ r或字符串$
的结尾