Регулярное выражение для соответствия текста с новой строкой в ​​конце - PullRequest
0 голосов
/ 29 апреля 2018

Я ищу регулярное выражение, которое соответствует, только если в конце текста есть новая строка (\ n). Неважно, сколько строк у меня последняя, ​​должна заканчиваться новой строкой.

Например,

TEXT1 = "This is a text without a new line at the end" failed to match
TEXT2 = "This is a text with a new line at the end\n" success to match
TEXT3 = "This is a \n text with multiple lines" failed to match
TEXT4 = "This is a \n text with multiple lines\n a new line at the end\n" success to match

Я использую следующее регулярное выражение, но оно не работает так, как я ожидал:

^((.)*(\r\n|\r|\n)*)*(\r\n|\r|\n)+$

1 Ответ

0 голосов
/ 29 апреля 2018

Вы можете сделать это с помощью String.endsWith :

"abc\n".endsWith("\n")  // true 

Или с Matcher.find :

Pattern.compile("\\n$").matcher("abc\n").find();  // true

Если вы хотите, чтобы ваше регулярное выражение совпадало со всей строкой от начала до конца, вы можете использовать флаг Pattern.DOTALL , чтобы изменить поведение точечного выражения (.) для соответствия любому символу включая переводы строки. DOTALL может быть указан со встроенным флагом (?s) или в качестве опции Pattern.compile :

"abc\n".matches("(?s)^.*\\n$")  // true

Pattern.compile("^.*\\n$", Pattern.DOTALL).matcher("abc\n").matches(); // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...