【发布时间】:2013-06-30 23:35:22
【问题描述】:
我有以下 RegEx 从 PHP 文件中删除注释:
%/\*.*?\*/%s
副作用是,在使用 glob 之类的 glob($basedir . '/*') 时,它会开始删除所有中间代码...
那么当正则表达式前面或后面有引号时,我如何告诉它不匹配?
【问题讨论】:
-
使用
preg_match查找“前面或后面有引号”是否占用,并将其转换为布尔值并在if-else statements中使用。读完这篇文章后,我首先想到了什么 -
这很重要,因为您当然也可以在 cmets 中使用引号,然后事情很快就会变得棘手。这意味着任何基于正则表达式的解决方案都不是最理想的——本质上,您需要一个完整的 PHP 语言解析器并使用它来正确识别 cmets。
-
除非在最简单的情况下,否则无法做到这一点。很可能,只有 PHP 可以解析 PHP(由于正则表达式和其他非平凡的结构)。对于 Perl,这有 been proven some time ago。
-
似乎匹配 this question。
标签: php regex regex-negation