【发布时间】:2017-07-17 09:47:27
【问题描述】:
answering another question 时,我编写了一个正则表达式来匹配所有空格,最多包含一个换行符。我使用 \R 换行符匹配器的负面后视来做到这一点:
((?<!\R)\s)*
后来我想了想,我说,哦不,如果有\r\n呢?它肯定会抓住第一个换行符\r,然后我会在下一个字符串的前面被一个虚假的\n 卡住,对吧?
所以我回去测试(并可能修复)它。但是,当我测试该模式时,它匹配整个\r\n。它不只匹配\r 离开\n,正如人们所期望的那样。
"\r\n".matches("((?<!\\R)\\s)*"); // true, expected false
但是,当我将documentation 中提到的“等效”模式用于\R 时,它返回false。那么这是 Java 的一个错误,还是有正当的理由可以匹配?
【问题讨论】:
标签: java regex java-8 regex-lookarounds