【问题标题】:What's the function of "@" in regular expressions on PHP? [duplicate]PHP正则表达式中“@”的作用是什么? [复制]
【发布时间】:2016-08-31 12:48:43
【问题描述】:

我在 PHP 上看到过一些关于带有“@”的正则表达式的例子,如下所示:

preg_match ("@[a-zA-Z0-9]@i", $value, $occurrences);

我可以看到这计算了在 $value 变量中找到的正则表达式的匹配数,但我想确定“@”是否用于这种特定情况,或者它的主要功能是什么正则表达式中的“@”?

你能帮帮我吗?

【问题讨论】:

标签: php regex


【解决方案1】:

这些是正则表达式模式的custom delimiters。最常见的是/,在您的情况下,它们已更改为@

自定义分隔符的好处在于转义。这是最好的例子。

考虑:

preg_match ("/Some\/Path/i", $value, $occurrences);

对比:

preg_match ("#Some/Path#i", $value, $occurrences);

但是,就个人而言,我倾向于避免使用它们,因为它使正则表达式模式,嗯,自定义。只需使用标准的/ 分隔符即可。

【讨论】:

  • 使用元字符作为分隔符是个问题,你应该提一下。
  • 需要较少转义的选项最终可能会更便携,不是吗?例如,在 c# 中,没有转义 / 的 # 分隔正则表达式将是有效的。
  • 分隔符是 PCRE 的东西,你可以在任何实现 PCRE 的东西中使用你想要的任何东西。唯一的“可移植性”问题是将正则表达式移动到非 PCRE 中,因为你必须完全删除它们,所以分隔符是什么仍然无关紧要。
  • @Jason McCreary 感谢您的帮助。
  • 感谢@Sammitch 的澄清。我已经更新了我的笔记。
猜你喜欢
  • 2013-01-12
  • 2012-08-03
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多