从字符串末尾获取所有换行符的正则表达式是啥
Posted
技术标签:
【中文标题】从字符串末尾获取所有换行符的正则表达式是啥【英文标题】:What is the Regular Expression to get all the newline characters from the end of the string从字符串末尾获取所有换行符的正则表达式是什么 【发布时间】:2021-01-10 00:41:52 【问题描述】:我尝试过使用[\s]+$
和(?:$|\s)+$
,但没有得到想要的输出。
我要找的是
String str ="this is a string ending with multiple newlines\n\n\n"
新行可以是:\n
或 \r
或 \r\n
,具体取决于操作系统,因此我们在此处使用 \s+
。
我需要从字符串末尾找到所有换行符 我必须在 Java 代码中使用它
【问题讨论】:
【参考方案1】:重点是,\s
在 Java 中默认匹配任何非 Unicode 空白(如果您使用 (?U)\s
,它匹配任何 Unicode 空白)。
你可以使用
String regex = "\\R+$";
String regex = "\\R+\\z";
请参阅regex demo。
如果您需要在字符串末尾获取每个单独的换行符序列,您可以使用
String regex = "\\R(?=\\R*$)";
见this regex demo。
这些模式意味着
\R+
- 一个或多个换行序列
$
- 在字符串的末尾(\z
匹配字符串的末尾,在这种情况下会以相同的方式工作)
\R(?=\R*$)
- 任何换行序列后跟零个或多个换行序列,直到整个字符串的末尾。
【讨论】:
或$
而不是\z
,因为没有(?m)
MULTILINE
标志也是一样的。
@Andreas 是的,在这种情况下,这些是同义词。以上是关于从字符串末尾获取所有换行符的正则表达式是啥的主要内容,如果未能解决你的问题,请参考以下文章
为啥正则表达式引擎允许/自动尝试在输入字符串的末尾进行匹配?