正则表达式从字符串末尾获取所有换行符

问题描述

我尝试使用[\s]+$(?:$|\s)+$,但没有得到想要的输出

我正在寻找的是

String str ="this is a string ending with multiple newlines\n\n\n" 

新行可能是:\n\r\r\n,具体取决于操作系统,因此我们在此处使用\s+

我需要从字符串末尾查找所有换行符 我必须在Java代码中使用它

解决方法

问题在于,在Java中,\s默认匹配任何非Unicode空格(如果使用(?U)\s,则匹配任何Unicode空格)。

您可以使用

String regex = "\\R+$";
String regex = "\\R+\\z";

请参见regex demo

如果需要在字符串末尾获得每个单独的换行序列,则可以使用

String regex = "\\R(?=\\R*$)";

请参见this regex demo

这些模式意味着

  • \R+-一个或多个换行符序列
  • $-字符串的末尾(\z与字符串的末尾匹配,并且在这种情况下将完全相同)
  • \R(?=\R*$)-任何换行符序列,后跟零个或多个换行符序列,直到整个字符串的末尾。