2013-12-09 196 views
1

我有一個字符串,我想提取轉義字符之間的子字符串。轉義字符之間的字符串正則表達式

例如

AC001 (\\Test123\homedir$) (H:) 

我怎樣才能Test123在Java

+0

三個提示:1)'.'匹配任何字符2)用括號'()'創建一個新組。 Matcher類支持查詢這些組。 3)對任何字符串使用'.'作爲第一個轉義字符,在第二個轉義字符之後,應該使用非貪婪搜索。沒有不貪婪的'''是吃任何字符:) – Vertex

回答

0

沒有正則表達式,你可以這樣做:

String str = "AC001 (\\\\Test123\\homedir$) (H:)"; 
String substr = str.substring(str.indexOf('\\')+2, str.indexOf('\\', str.indexOf('\\')+2)); 
//=> Test123 
+0

這很好,直到你得到:\\ Test123 \\ Test456 \\ Test789 \\ homedir $ – M21B8

+0

@ M21B8:查看更新的答案。 – anubhava

0
String s = "AC001 (\\Test123\homedir$) (H:)"; 

s = s.substring(s.indexOf('\\') + 2); 
s = s.substring(0, s.indexOf('\\')); 

System.out.println(s); 
1

嘗試,

String input = "AC001 (\\Test123\\homedir$) (H:)"; 
    String regex="(\\\\.*\\\\)"; 
    Pattern ptrn = Pattern.compile(regex); 
    Matcher mtchr = ptrn.matcher(input); 
    while (mtchr.find()) { 
     String res=mtchr.group(); 
     System.out.println(res.substring(1, res.length()-1)); 
    } 
0

在一個行:

String middle = str.replaceAll(".*\\\\(.*?)\\h.*", "$1"); 

這個正則表達式匹配整個字符串,但捕獲目標,它是使用反向引用返回的目標。

相關問題