2015-01-20 61 views
1

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

实施例的输入

  • /用户/松鸦
  • /用户/松鸦/简档
  • /用户/松鸦?VAR =值

在每种情况下,我想以包含“杰伊”的字符串结束。简单地使用indexOf在这里是适当的,还是这更适合于正则表达式?我在Java中使用正则表达式的经验有限,所以我们不胜感激。谢谢!

+0

你总是可以在'“[/ \\?]”上分割,然后在“users”之后捕获String。 – 2015-01-20 20:20:49

+1

或者用'“/ users /(\\ w +)”'捕获? – rchang 2015-01-20 20:24:57

回答

4

为此,我建议您使用URI类。

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