正则表达式,用于匹配字符或空格或行尾

时间:2017-08-05 02:47:34

标签: regex

我是一个完整的正则表达式菜鸟,今天一直在努力解决这个问题。我有一些内容与其中的网址。我想简单地提取这些网址,但我无法选择到网址的末尾。

我这里有一个代码示例: 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...

2 个答案:

答案 0 :(得分:1)

在这种情况下,你需要一个懒惰的匹配而不是贪婪的匹配。通过添加&#39;?&#39;紧挨着第二个&#39; *&#39;在你的正则表达式中,它会起作用。

答案 1 :(得分:0)

看起来我能够通过为我的积极前瞻添加更多替代方案来解决它:

(?:http|ftp)s?:\/\/\S*?\.\S*?(?="|<| |\n|\r|$)

因此它将检测换行符/回车符\ n \ r或字符串$

的结尾