我很确定我在某处看过“\R
是Ruby2中引入的,用于匹配换行符,无论它们来自哪里:Unix的\n
、macOS的\r
或Windows的\r\n
。”。也就是说,Ruby2应该将\R
视为%r{\r\n|\r|\n}
。
这个工作得很好:
▶ "a\nb".match /\R/
#⇒ #<MatchData "\n">
▶ "a\rb".match /\R/
#⇒ #<MatchData "\r">
▶ "a\r\nb".match /\R/
#⇒ #<MatchData "\r\n">
即使换行符/回车符被合并,也可以正常工作:
▶ "a\r\n\nb".match /\R{2}/
#⇒ #<MatchData "\r\n\n">
除非试图否定
\R
:▶ "a\nb".match /[^\R]+/
#⇒ #<MatchData "a\nb">
不过,否定 \n
是可以的:
▶ "a\nb".match /[^\n]+/
#⇒ #<MatchData "a">
很遗憾,
\R
在谷歌上搜索非常困难。无论是Regexp
rdoc还是正则表达式都没有提到它。有没有任何正则表达式大师在这里解释一下,以便更容易地搜索到呢?
提前感谢。