[英]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.