Java 匹配URI的某些部分

Java 匹配URI的某些部分,java,Java,我需要将我正在编写的Spring过滤器的URI的某个部分解析为一个变量。我试图提取一个用户名,它可能是URI的最后一部分,更复杂的URI的一部分,或者在用户名之后包含查询字符串参数 示例输入 /用户/杰伊 /用户/jay/profile /用户/jay?var=值 在每种情况下,我都希望以一个包含“jay”的字符串结束。在这里简单地使用indexOf合适吗,还是更适合正则表达式?我在Java中使用正则表达式的经验有限,因此非常感谢您的帮助。谢谢 为了正确地完成这一点,我建议你使用这个类 为了

我需要将我正在编写的Spring过滤器的URI的某个部分解析为一个变量。我试图提取一个用户名,它可能是URI的最后一部分,更复杂的URI的一部分,或者在用户名之后包含查询字符串参数

示例输入

  • /用户/杰伊
  • /用户/jay/profile
  • /用户/jay?var=值

在每种情况下,我都希望以一个包含“jay”的字符串结束。在这里简单地使用
indexOf
合适吗,还是更适合正则表达式?我在Java中使用正则表达式的经验有限,因此非常感谢您的帮助。谢谢

为了正确地完成这一点,我建议你使用这个类


为了做到这一点,我建议你使用这个类


您可以始终在
“[/\?]”“
上拆分,然后捕获“用户”后的字符串。或者可以使用
“/users/(\\w+)”
进行捕获。您可以始终在
“[/\?]”“
上拆分,然后捕获“用户”后的字符串。或者使用
“/users/(\\w+)”
进行捕获?
URI users = URI.create("/users"); // Can be put as a final static field

URI uri = URI.create(uriString);  // Can be skipped if you have a URI as input

String afterUsers = users.relativize(uri).getPath();
if (afterUsers.isEmpty())
    System.out.println("No user");
else
    System.out.println("User: " + afterUsers.split("/", 2)[0]);