2013-12-09 3 views
1

У меня есть строка, и я хочу извлечь подстроку между escape-символами.Регулярное выражение для строки между escape-символами

например.

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

Как я могу получить test123 в Java

+0

три подсказки: 1) '.' соответствует любому символу 2) с круглой скобкой'() 'вы создаете новую группу. Поддержка класса Matcher для запросов к таким группам. 3) Чтобы использовать '.' для любой String для первого escape-символа и после второго escape-символа, вы должны использовать не-жадный поиск. Без неживого '.' ест любой символ :) – 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

Try,

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

Это регулярное выражение соответствует всей строке, но фиксирует цель, которая возвращается с использованием обратной ссылки.

Смежные вопросы