正则表达式将文本与末尾的新行匹配

时间:2018-04-29 01:32:43

标签: java regex

我正在寻找只有在文本末尾有新行(\ n)才能匹配的正则表达式。无论我用最后一行的多少行都应以新行结束。

例如,

lists:flatten(io_lib:format("~p", [ [{<<"Location">>,[{<<"lat">>,123456},{<<"lng">>,123456}]}] ])).

我使用以下正则表达式,但它不能像我预期的那样工作:

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

1 个答案:

答案 0 :(得分:3)

您可以使用String.endsWith执行此操作:

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

Matcher.find

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

如果您希望正则表达式从头到尾匹配整个字符串,可以使用Pattern.DOTALL标志更改点表达式(.)的行为以匹配任何字符包括换行符。可以使用嵌入式标记(?s)Pattern.compile的选项指定DOTALL:

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

Pattern.compile("^.*\\n$", Pattern.DOTALL).matcher("abc\n").matches(); // true