Java регулярное выражение, извлечь строку? - PullRequest
0 голосов
/ 24 января 2012

с учетом 3 строк, как мне извлечь 2-ю строку с помощью регулярного выражения?

line1
line2
line3 

Я использовал

pattern = Pattern.compile("line1.*(.*?).*line3");

Но ничего не появляется

Ответы [ 4 ]

1 голос
/ 24 января 2012

Вы можете использовать флаг Pattern.DOTALL следующим образом:

String str = "line1\nline2\nline3";
Pattern pt = Pattern.compile("line1\n(.+?)\nline3", Pattern.DOTALL);
Matcher m = pt.matcher(str);
while (m.find())
    System.out.printf("Matched - [%s]%n", m.group(1)); // outputs [line2]
0 голосов
/ 24 января 2012

Попробуйте pattern = Pattern.compile("line1.*?(.*?).*?line3", Pattern.DOTALL | Pattern.MULTILINE);

0 голосов
/ 24 января 2012

Вы можете извлечь все между двумя непустыми строками:

(?<=.+\n).+(?=\n.+)
0 голосов
/ 24 января 2012

Это не сработает, так как ваш первый .* соответствует всему, вплоть до строки3.Ваш неохотный матч теряется, как и второй .*.Попробуйте указать разрывы строк (^ и $) после строки1 / перед строкой 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...