使用RegEx提取自由文本块中的所有url

本文关键字:url RegEx 提取 自由 文本 使用 | 更新日期: 2023-09-27 18:03:53

我正在尝试检测在自由文本块中列出的所有url。我正在使用。net Regex.Matches调用…(http|https)://[^'s "']{4,}

现在,我已经放入了以下文本:
这里有一个链接http://somelink.com
这是一个链接,我没有空格的http://nospacelink.com/something?something=&39358235
http://nospacelink.com/something?something=& 12233454
这是一个我已经处理过的链接。以下是一些你不允许知道的秘密:https://somethingbad.com
只是有点烦人,我放了一个新的地址东西捕获类型为'http://somethinginspeechmarks.com',你现在要做什么?
这里有一个链接http://postTextLink.com然后是一些post text
这里是一个链接,有一个句号http://alinkwithafullstoplink.com。

,得到以下输出:

http://somelink.com
http://nospacelink.com?something=&39358235
http://nospacelink.com?something=&12233454
http://alreadyhandledlink.com
https://somethingbad.com
http://somethinginspeechmarks.com
http://postTextLink.com
http://alinkwithafullstoplink.com.

请注意最后一个条目的句号。我如何更新我的正则表达式说"如果有一个句号在结束,请忽略它?"

另外,请注意"获取URL的部分(Regex)"与我的问题无关,因为那个问题是关于如何分解特定的URL。我想提取多个完整的url。请查看我的输入和当前输出进行澄清!我有一个正则表达式已经做了大部分我想要的,但不是很正确。你能解释一下我的方法在哪里可以改进吗?

使用RegEx提取自由文本块中的所有url

我会在模式中添加[^'.]

这个模式说明最后一个字符不能是句号。

所以对于(http|https)://[^'s "']{4,}[^'.],它将尝试匹配所有不以句号结尾的地址。

编辑:

[^.'s"']

更新:

考虑对你的模式做以下微小的改变:

(http|https)://[^'s "']{4,}(?='.)