问题描述
我尝试使用[\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*$)
-任何换行符序列,后跟零个或多个换行符序列,直到整个字符串的末尾。