По умолчанию ^
и $
соответствуют началу и концу ввода соответственно.Вам нужно включить режим MULTI-LINE с помощью (?m)
, в результате чего ^
и $
будут соответствовать началу и концу строки:
(?m)^.*$
Демонстрация:
import java.util.regex.*;
public class Main {
public static void main(String[] args) throws Exception {
String text = "auser1 home1b\n" +
"auser2 home2b\n" +
"auser3 home3b";
Matcher m = Pattern.compile("(?m)^.*$").matcher(text);
while (m.find()) {
System.out.println("line = " + m.group());
}
}
}
производит следующий вывод:
line = auser1 home1b
line = auser2 home2b
line = auser3 home3b
РЕДАКТИРОВАТЬ I
Тот факт, что ^.*$
ничего не соответствует, потому что .
по умолчанию не 't совпадают \r
и \n
.Если вы включите DOT-ALL с помощью (?s)
, в результате чего .
также совпадет с ними, вы увидите, что вся входная строка соответствует:
(?s)^.*$
EDIT II
В этом случае, вы также можете сбросить ^
и $
и просто искать шаблон .*
.Поскольку .
не будет совпадать с \n
, вы получите те же совпадения при поиске (?m)^.*$
, что и @Kobi справедливо упоминается в комментариях.