У меня есть строка, и я хочу извлечь подстроку между escape-символами.Регулярное выражение для строки между escape-символами
например.
AC001 (\\Test123\homedir$) (H:)
Как я могу получить test123 в Java
У меня есть строка, и я хочу извлечь подстроку между escape-символами.Регулярное выражение для строки между escape-символами
например.
AC001 (\\Test123\homedir$) (H:)
Как я могу получить test123 в Java
Без регулярных выражений вы можете сделать:
String str = "AC001 (\\\\Test123\\homedir$) (H:)";
String substr = str.substring(str.indexOf('\\')+2, str.indexOf('\\', str.indexOf('\\')+2));
//=> Test123
String s = "AC001 (\\Test123\homedir$) (H:)";
s = s.substring(s.indexOf('\\') + 2);
s = s.substring(0, s.indexOf('\\'));
System.out.println(s);
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));
}
В одной строке:
String middle = str.replaceAll(".*\\\\(.*?)\\h.*", "$1");
Это регулярное выражение соответствует всей строке, но фиксирует цель, которая возвращается с использованием обратной ссылки.
три подсказки: 1) '.' соответствует любому символу 2) с круглой скобкой'() 'вы создаете новую группу. Поддержка класса Matcher для запросов к таким группам. 3) Чтобы использовать '.' для любой String для первого escape-символа и после второго escape-символа, вы должны использовать не-жадный поиск. Без неживого '.' ест любой символ :) – Vertex