我正在寻找只有在文本末尾有新行(\ 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
答案 0 :(得分:3)
您可以使用String.endsWith执行此操作:
"abc\n".endsWith("\n") // true
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