Regex\R在字符类中不起作用

bil*_*oah 6 php regex

在PHP中,\R应该匹配任何换行序列的转义字符在字符类中不起作用.

我最近在stackoverflow上的另一个答案中了解了这个特殊字符,并且说实话我还没有找到很多在线来记录它的存在 - 除了在用户评论中,它在php.net上没有提到.

问题(S):

  • 为什么不在\R字符类中工作?
  • 它在哪里记录?

例1:(https://regex101.com/r/vA8xV3/3)

$a = "line1
      line2"

echo preg_replace('/\R/',' ',$a);
Run Code Online (Sandbox Code Playgroud)

返回(查找匹配,替换为单个空格):

line1 line2
Run Code Online (Sandbox Code Playgroud)

例2:(https://regex101.com/r/vA8xV3/2)

$a = "line1
      line2"

echo preg_replace('/[\R]/',' ',$a);
Run Code Online (Sandbox Code Playgroud)

返回(不匹配):

line1
line2
Run Code Online (Sandbox Code Playgroud)

Ant*_*ony 6

PCRE手册:

转义字符类中的序列

定义单个字符值的所有序列都可以在字符类的内部和外部使用.另外,在一个字符类中,\b被解释为退格字符(十六进制08).

\N 在字符类中是不允许的.\B,\R并且\X在字符类中并不特殊.与其他无法识别的转义序列一样,默认情况下它们被视为文字字符"B","R"和"X",但如果PCRE_EXTRA设置了该选项则会导致错误.在外部特征类中,这些序列具有不同的含义.

(强调我添加的相关位)