2013-10-12 2 views
0

Начальная СтрокаКак использовать n в регулярных выражениях?

System.out.println(myString) 

выглядит следующим образом

Name: Sacha 
Last name: Sidor 
............. 
Name: Masha 
........ 

Я пытаюсь захватить второе имя, то есть Маша

  Pattern pattern = Pattern.compile("(?:Name:.*?){2}\\n"); 
      Matcher matcher = pattern.matcher(myString); 
      String secondName = ""; 
      while (matcher.find()) { 
      secondName = matcher.group(); 
       } 
      System.out.println(secondName); // prints nothing ??? 

ответ

3

Используйте Pattern.DOTALL флаг, чтобы . соответствуют всем символам, включая новую строку. Без DOTALL флаг, . не соответствует новой строке.

Pattern pattern = Pattern.compile("(?:Name:.*?)(?:Name:)([^\\n]+)", Pattern.DOTALL); 
Matcher matcher = pattern.matcher(myString); 
String secondName = ""; 
if (matcher.find()) 
    secondName = matcher.group(1); 
System.out.println(secondName); 
Смежные вопросы