Java 用于在架构和权限之后提取URL中路径的正则表达式
我试图编写一个正则表达式来提取URL中模式和权限之后的所有内容。例如,如果我有Java 用于在架构和权限之后提取URL中路径的正则表达式,java,regex,url,Java,Regex,Url,我试图编写一个正则表达式来提取URL中模式和权限之后的所有内容。例如,如果我有 http://myHost:8080/Starter/docs/start.jsp 我需要Java中的正则表达式,它获取“Starter/docs/start.jsp” 提前感谢您的帮助 如果始终使用同一个域,则不需要正则表达式 str = str.replace("http://myHost:8080", ""); URL的实际官方标准包括用于解析的示例正则表达式: 附录B.用正则表达式解析URI引用 因为“第
http://myHost:8080/Starter/docs/start.jsp
我需要Java中的正则表达式,它获取“Starter/docs/start.jsp”
提前感谢您的帮助 如果始终使用同一个域,则不需要正则表达式
str = str.replace("http://myHost:8080", "");
URL的实际官方标准包括用于解析的示例正则表达式: 附录B.用正则表达式解析URI引用 因为“第一场比赛获胜”算法与“贪婪”算法相同 POSIX正则表达式使用的消歧方法,它是 使用正则表达式解析 URI引用的潜在五个组件 下一行是用于分解 格式良好的URI引用到其组件中
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
上面第二行中的数字仅用于帮助可读性;
它们表示每个子表达式(即每个
成对括号)。我们引用与子表达式匹配的值
美元。例如,将上述表达式与
http://www.ics.uci.edu/pub/ietf/uri/#Related
导致以下子表达式匹配:
$1 = http:
$2 = http
$3 = //www.ics.uci.edu
$4 = www.ics.uci.edu
$5 = /pub/ietf/uri/
$6 = <undefined>
$7 = <undefined>
$8 = #Related
$9 = Related
如果您正在寻找能够处理格式错误的URL的模糊匹配,那么有许多开源URI解析器(至少对于JavaScript,例如),您可以检查它们的正则表达式是如何工作的。您可以执行以下操作:
String url = "https://myHost:8080/Starter/docs/start.jsp";
String pattern = "^[^#]*?://.*?/(.*)$";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(url);
if (m.find()) {
System.out.println(m.group(1));
}
您可以简单地使用子字符串来解决这个问题。URL的实际官方标准包括一个用于解析的示例正则表达式:-它可能没有涵盖边缘情况,但应该很好。谢谢CloudFoots。我想我明白了,下面是我的案例的工作^[^#]*?:/.*(/.*))$
String url = "https://myHost:8080/Starter/docs/start.jsp";
String pattern = "^[^#]*?://.*?/(.*)$";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(url);
if (m.find()) {
System.out.println(m.group(1));
}