如何在 PHP 中注释掉正则表达式的 */ 部分

Posted

技术标签:

【中文标题】如何在 PHP 中注释掉正则表达式的 */ 部分【英文标题】:How Do You Comment Out the */ Part of a Regular Expression in PHP 【发布时间】:2012-09-11 23:20:56 【问题描述】:

我有 preg_replace 函数,我正在调用该函数并将其放在多行以提高可读性,但正则表达式中的 */ 字符会弄乱 cmets。如何注释掉所有这些行而不将它们全部移到一行?

return preg_replace('/.*/',
    'Lorem Ipsum' .
    'More Lorem Ipsum'
    ,
    $foo);

【问题讨论】:

【参考方案1】:

您可以使用不同的正则表达式模式分隔符:

return preg_replace('#.*#',
    'Lorem Ipsum' .
    'More Lorem Ipsum'
    ,
    $foo);

编辑: 分隔符是 PCRE(Perl 兼容正则表达式)的一个特性。使用不同的分隔符无需 php 配置。

Regexp Quote-Like Operators

...您可以使用任何一对非字母数字、非空白字符 作为分隔符。这对于匹配路径名特别有用 包含“/”,以避免 LTS(倾斜牙签综合症)。

Quote and Quote-like Operators

非括号分隔符前后使用相同的字符,但 四种ASCII括号(圆、角、方、花)全部嵌套

这些都是有效的:

'/.*/'
'#.*#'
'.*' /* Note that '.*' would be incorrect. */

查看PHP's documentation on PCRE Patterns 了解一个非常好的概览。

【讨论】:

和php自动检测不同的分隔符?还是我必须在某个地方设置它? 我刚刚更新了答案,提供了更多信息来回答您关于分隔符的问题。

以上是关于如何在 PHP 中注释掉正则表达式的 */ 部分的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式过滤掉 c 类型的注释? [复制]

如何使用 PHP 解码带有注释的 JSON 文件? [复制]

(php) 正则表达式删除注释但忽略字符串中的出现

23个常用正则表达式(数值和字符串)

23个常用正则表达式(数值和字符串)

正则表达式匹配 PHP 注释