我有以下功能
private static String changeUrl(String text) {
String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
while(m.find()) {
// get whole matching
String urlStr = m.group();
if (urlStr.startsWith("(") && urlStr.endsWith(")")) {
urlStr = urlStr.substring(1, urlStr.length() - 1);
}
System.out.println(urlStr);
return text;
}
工作正常,并打印网址,但无法找到
形式的网址/example.com/something/sdfs/sdf/skdjf.sdfj
/something/sdfs/sdf/skdjf.sdfj
我可以改变模式,但我是正则表达式的新手,并且不想产生副作用。那么是否有经过测试的正则表达式模式可以识别所有可能性? 谢谢。
答案 0 :(得分:1)
您似乎希望将/
添加为另一个选项作为网址的开头。为此,您可以更改
(http://|www[.])
部分类似于
(http://|www[.]|/)
我也会考虑使用URI
URL
或File
类来处理此类数据而不是正则表达式,但因为我不知道你是如何使用这个正则表达式的(更多输入)例子很有帮助)我很难就这个问题说些什么。