当测试另一个用户的问题的答案时,我发现了一些我不理解的东西.问题是\t \n \r用一个空格替换字符串中的所有文字字符.
现在,我尝试的第一个模式是:
/(?:\\[trn])+/
Run Code Online (Sandbox Code Playgroud)
这令人惊讶地无法奏效.我在Perl中尝试了相同的模式,它运行良好.经过一些试验和错误后,我发现PHP需要3个或4个反斜杠才能匹配该模式,如:
/(?:\\\\[trn])+/
Run Code Online (Sandbox Code Playgroud)
要么
/(?:\\\[trn])+/
Run Code Online (Sandbox Code Playgroud)
这些模式 - 令我惊讶 - 都是有效的.为什么需要这些额外的反斜杠?
它在perl中工作,因为你直接将其作为正则表达式传递 /(?:\\[trn])+/
但在php中,你需要传递为字符串,所以需要额外的转义为反斜杠本身.
"/(?:\\\\[trn])+/"
Run Code Online (Sandbox Code Playgroud)
匹配单个反斜杠的正则表达式\将成为'/ \\\\ /'作为 PHP preg字符串
| 归档时间: |
|
| 查看次数: |
5285 次 |
| 最近记录: |