正则表达式php多行注释(Meld)

时间:2016-10-29 10:30:12

标签: php regex diff meld

我需要对同一个应用程序的两个不同版本进行区分。 这些文件使用许可证签名,许可证已更改。

我不希望包含仅许可证差异的文件被标记为不同。

我使用Meld作为差异软件,它允许使用正则表达式。

<?php
/**
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the License ....
 *
 */

有类似的问题,但没有一个对我有用:

  1. RegEx to remove /** */ and // ** **// php comments

  2. How can I perform a diff that ignores all comments?

  3. Regex尝试过:

    \/\*.*?\*\/|\/\/.*?\n
    ~//?\s*\*[\s\S]*?\*\s*//?~
    

    实际上这个看起来有效,但我不确定它是否过滤过多:

    \*.*
    

    更新
    这是不可能的: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

      

    虽然过滤器代码在Meld中   很乐意接受覆盖(并删除)多行的正则表达式,   这会导致差异看到的文本与文本之间的行不匹配   我们显示的文本,因此所有更改块都是错误的。

    不同的方法是在将文件处理成文件之前从文件中删除这些行。

2 个答案:

答案 0 :(得分:0)

\s*\/\*.*|\s*\*.*

显然meld并不接受所有python正则表达式作为文本过滤器,没有多行也不接受&#34; |&#34;在括号内。 因此,此解决方案不包括以星号开头的行和&#34; / *&#34;带有可选空格。它不会精确地过滤掉所有的PHP注释,但可能适用于您的文件。

另外看看: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

答案 1 :(得分:0)

此正则表达式更易于多行使用:

  .*\/\*[^\/]+\/\s