我想在用户的文本中获取用户提供的URL(我假设URL必须以http://开头)。这是第一次尝试:
Pattern pattern = Pattern.compile("http://[^ ]+");
但如果用户输入类似的内容:
"look at somepage (http://somepage.net)"
"look at http://somepage1.net, http://somepage2.net and sth else"
"Please visit our page http://somepage.net."
网址末尾的(?)字符不正确。怎么避免这个?
答案 0 :(得分:0)
数学,什么网址不能以[,。)等结尾,只能结束[A-Za-z]或/,但这会打破网址的特定结尾,例如http://site.com/read.php?key=F# $。)< / p>
答案 1 :(得分:0)
答案是你不能100%准确地做到这一点。
像"http://somepage1.net,"
这样的网址在技术上是合法的,并且无法确定","
是否是网址的一部分或只是标点符号。
像"http://somepage1.net or something"
这样的网址在技术上是非法的,但典型的最终用户并不知道这一点。 (他们习惯于在浏览器中输入各种各样的时髦东西的浏览器。)
或许,您可以做的最好的事情就是使用正则表达式来提取合法网址,然后在假设的网页右端修剪文字标点字符,它们并不打算成为URL的一部分。
您还可以将匹配引号或左/右括号视为表示URL边界; e.g。
The secret URL is "http://example.com/?" ... don't leave off the "?"