gpt4 book ai didi

php - PHP 正则表达式模式中需要额外的反斜杠

转载 作者:可可西里 更新时间:2023-11-01 12:44:07 24 4
gpt4 key购买 nike

测试 another user's question 的答案时我发现了一些我不明白的东西。问题是用一个空格替换字符串中的所有文字 \t \n \r 字符。

现在,我尝试的第一个模式是:

/(?:\\[trn])+/

令人惊讶的是,这不起作用。我在 Perl 中尝试了相同的模式并且效果很好。经过一些尝试和错误后,我发现 PHP 需要 3 或 4 个反斜杠来匹配该模式,如:

/(?:\\\\[trn])+/

/(?:\\\[trn])+/

这些模式 - 令我惊讶的是 - 都有效。为什么需要这些额外的反斜杠?

最佳答案

您需要 4 个反斜杠来表示正则表达式中的 1,因为:

  • 2 个反斜杠用于在字符串中进行反转义 ("\\\\"->\\)
  • 1 个反斜杠用于正则表达式引擎中的反转义 (\\->\)

来自 PHP 文档,

escaping any other character will result in the backslash being printed too1

因此 \\\[,

  • 1 个反斜杠用于对 \ 进行转义,一个保留是因为 \[ 无效 ("\\\["->\\[)
  • 1 个反斜杠用于正则表达式引擎中的反转义 (\\[ ->\[)

是的,它有效,但不是一个好的做法。

关于php - PHP 正则表达式模式中需要额外的反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com