我有以下功能
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;
}
它工作正常,可以打印URL,但是找不到表单中的URL
/example.com/something/sdfs/sdf/skdjf.sdfj
/something/sdfs/sdf/skdjf.sdfj
我可以更改模式,但是我是regex的新手,并且不想产生副作用。那么是否有经过测试的正则表达式模式可以识别所有可能性?
谢谢。
最佳答案
似乎您想将/
作为另一个选项添加为url的开头。为此,您可以更改
(http://|www[.])
一部分喜欢
(http://|www[.]|/)
我也将考虑使用
URI
URL
或File
类代替正则表达式来处理此类数据,但是由于我不知道您如何使用此正则表达式(一些更多的输入示例会有所帮助),因此很难我要说更多关于这个问题的话。