簡體   English   中英

Java Regex 提取帶有可選尾部斜杠的子字符串

[英]Java Regex to extract substring with optional trailing slash

正則表達式:

\/test\/(.*|\/?)

輸入

/something/test/{abc}/listed

/something/test/{abc}

預期的

{abc}用於兩個輸入

這應該適合你:

public static void main(String[] args) {

    String s1 = "/something/test/{abc}/listed";
    String s2 = "/something/test/{abc}";

    System.out.println(s1.replaceAll("[^{]+(\\{\\w+\\}).*", "$1"));
    System.out.println(s2.replaceAll("[^{]+(\\{\\w+\\}).*", "$1"));
}

開/關:

{abc}
{abc}

您需要在/test/之后捕獲除/之外的所有字符:

String s = "/something/test/{abc}/listed";
Pattern pattern = Pattern.compile("/test/([^/]+)"); // or "/test/\\{([^/}]+)"
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
    System.out.println(matcher.group(1)); 
} 

在線演示

詳情

  • /test/ - 匹配/test/
  • ([^/]+) - 匹配並捕獲到組 1 中的一個或多個 ( + )(但盡可能多,因為+是貪婪的)除/之外的字符(由於否定字符類[^/] )。

請注意,在 Java 正則表達式模式中,您不需要轉義/因為它不是特殊字符並且不需要正則表達式分隔符。

正則表達式(作為 Java 字符串,帶有雙反斜杠):

".*\\/test\\/([^/]*).*"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM