2

我需要在 java 的文本帖子中找到短 url。我有以下正则表达式“(http://(bit\.ly|t\.co|lnkd\.in|tcrn\.ch).*?)\s”

我有 2 个问题

  1. 上述表达式的问题是,如果它位于行尾,则它与短 url 不匹配。ex For text "blah http://linkd.in/R9Msf3 blah" 给出 "http://linkd.in/R9Msf3 "

    但是等等等等http://linkd.in/R9Msf3没有给出“http://linkd.in/R9Msf3”

    有什么建议如何匹配这两种模式?基本上我只需要替换文本中的短网址。

  2. 还有没有更好的方法来获取所有短 url 格式?如果我对其进行硬编码,那么每次我都必须向配置中添加新格式。

4

2 回答 2

2

而不是.*用来\S*避免匹配空格。您不需要?,您可以使用\b而不是\s匹配 url 结尾和空格或字符串结尾之间的边界。

(http://(bit\.ly|t\.co|lnkd\.in|tcrn\.ch)\S*)\b
于 2012-10-09T00:08:57.287 回答
0

(\s|$)在你的正则表达式结束时尝试

所以 http://(linkd\.in|t\.co|bitly\.co|tcrn\.ch).*?(\s|$)

用正则表达式测试

在此处输入图像描述

于 2012-10-08T22:49:33.633 回答