Perl的/ m正则表达式修饰符在Windows上的匹配方式不同吗?

Chr*_*lan 5 regex windows perl multiline

以下Perl语句在Unixish机器上的行为相同.他们在Windows上的表现有所不同吗?如果是的话,是不是因为魔术\n?

  split m/\015\012/ms, $http_msg;
  split m/\015\012/s, $http_msg;
Run Code Online (Sandbox Code Playgroud)

我从Win32烟雾测试仪上的一个CPAN模块上出现故障.它看起来像是一个\ r \n vs \n \n \n问题.我最近做的一个改变是将// m添加到我的正则表达式中.

bar*_*art 12

对于这些正则表达式:

m/\015\012/ms
m/\015\012/s
Run Code Online (Sandbox Code Playgroud)

/ m和/ s都没有意义.

  • / s:也.匹配\n.你的正则表达式不包含.
  • /米:品牌^$旁边嵌入匹配\n字符串英寸 你的正则表达式不包含^nor $或者他们的同义词.

如果你的输入句柄(套接字?)在文本模式下工作,那么可能的是,在Windows上删除了\r(\015)字符.

那么该怎么办?我建议将\015字符设为可选字符,并将其拆分

/\015?\012/
Run Code Online (Sandbox Code Playgroud)

不需要/ m,/ s甚至领先m//.那些只是货物崇拜.