首页 > 解决方案 > 跳过结束句点的 URL 正则表达式

问题描述

我正在尝试创建一个与普通文本中的 url 字符串匹配的正则表达式。我有这个:

http[s]?://[^\s]+

这似乎工作得很好,但如果 url 位于句子的末尾,它也会抓住句号。例如对于这个字符串:

我正在输入一些带有 url http://something.com/something-?args=someargs的文本。这是另一句话。

它匹配:

http://something.com/some-thing?args=someargs

我希望它匹配:

http://something.com/some-thing?args=someargs

显然我不能排除句点,因为它们以前在 url 中,但我不知道如何告诉它排除最后一个句点(如果有的话)。我可能会对行尾或空格使用负前瞻,但如果它位于行的中间(后面没有句点),则会忽略 url 的最后一个字符。

我在网上看到的大多数都有相同的问题,它们与结束点匹配,所以也许不可能?我知道基本的正则表达式,但肯定不是天才,所以如果有人有解决方案,我将非常感激:)。

另外,如果需要,我可以在这种情况下进行一些后期处理以删除点,似乎应该有一个正则表达式解决方案......

标签: regex

解决方案


试试这个 http[s]?://[^\s]+[^. ]


推荐阅读