【问题标题】:PHP preg_match escaping character [duplicate]PHP preg_match转义字符[重复]
【发布时间】:2016-03-21 18:18:52
【问题描述】:

所以我在使用正则表达式时遇到了以下问题:

我想要实现的目标:获取命名空间的最后一个元素,在本例中为“BAZ”

为此,我使用下面的正则表达式:

preg_match("/[^\\]*$/", 'Foo\Bar\Baz', $output);

由于某种原因,我收到此错误:

preg_match(): 编译失败:偏移 6 处的字符类缺少终止 ]

【问题讨论】:

  • 你正在转义方括号。
  • 你不需要正则表达式,echo end(explode('\\', 'Foo\Bar\Baz'));
  • 同意 .... RegEx 应该是最后的选择 ..! @chris85 写个答案,我给你+1 ;-)

标签: php regex


【解决方案1】:

您需要双重转义 \\,因为在 PHP 中,正则表达式作为字符串输入,其中需要每个文字 \\\,而正则表达式引擎需要对每个 \ 进行额外转义,因此您最终得到 4 个 @987654328 @:

preg_match('/[^\\\\]*$/', 'Foo\Bar\Baz', $output);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多