Я полагаю, что ваша проблема в том, что * жадный, поэтому он соответствует всем остальным '\ n' в строке
Если вы хотите придерживаться приведенного выше кода, попробуйте: "[\ S] * [\ s] +". Что означает совпадение с нулем или несколькими непробельными символами, за которыми следует один или несколько пробельных символов.
фиксированный код:
public static void main(String[] args) {
String input = "A1234567890\nAAAAA\nsdfasdf\nasdfasdf";
String regex = "[\\S]*[\\s]+";
Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println(input.substring(m.start(), m.end()) + "*");
}
if (m.matches()) {
System.out.println("matches() found the pattern \"" + "\" starting at index " + " and ending at index ");
} else {
System.out.println("matches() found nothing");
}
}
ВЫХОД:
A1234567890
* ААААА
* sdfasdf
* match () ничего не нашел
Также шаблон
"([\\S]*[\\s]+)+([\\S])*"
будет соответствовать всему выводу (matcher возвращает true), но испортит маркерную часть вашего кода.