Java 用于在架构和权限之后提取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引用 因为“第

我试图编写一个正则表达式来提取URL中模式和权限之后的所有内容。例如,如果我有

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));
}