2015-01-20 58 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]);