我在java 中有字符串,可能包含或不包含某些链接(网址如www.google.com,stackoverflow.com,stanford.edu等) 。现在我想在字符串中搜索它是否包含任何链接。我有两个问题:
搜索链接时要搜索的内容。我的意思是链接可能或可能不包含www,https,com等,所以如何区分它与文本。链接的RFC规范是什么?
在Java中使用哪个函数来搜索正则表达式?我对Java很新。
答案 0 :(得分:2)
这会对你有帮助。
尝试使用每个项目形成网址。
import java.net.URL;
import java.net.MalformedURLException;
// Replaces URLs with html hrefs codes
public class URLInString {
public static void main(String[] args) {
String s = args[0];
// separete input by spaces ( URLs don't have spaces )
String [] parts = s.split("\\s");
// Attempt to convert each item into an URL.
for( String item : parts ){
try {
URL url = new URL(item);
// If possible then replace with anchor...
System.out.print("<a href=\"" + url + "\">"+ url + "</a> " );
}catch (MalformedURLException e) {
// If there was an URL that was not it!...
System.out.print( item + " " );
}
}
}
答案 1 :(得分:0)
这不依赖于例外来查找URL有效性,只需通过正则表达式查找URL:
/**
* Fills the arraylist urls with all valid (and a few invalid) urls in 's'
*/
void findUrlsInString(String s, ArrayList<String> urls) {
Pattern p = Pattern.compile(
"(([a-z]+):((//)|(\\\\))+)?[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*");
Matcher m = p.matcher(s);
while (m.find()) {
urls.add(m.group());
}
}
正则表达式并不完美;我已经调整了它from here,但我找不到一个规范的Java正则表达式的URL。您可以制作将通过此正则表达式的无效网址,但这需要轻微的努力。