Regexphp多行注释(Meld)


Regex php multiline comment (Meld)

我需要区分同一应用程序的两个不同版本。这些文件是用许可证签名的,并且该许可证已更改。

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

我使用Meld作为diff软件,它允许使用regex。

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

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

  1. RegEx删除/***和//***//php注释

  2. 如何执行忽略所有注释的diff?

Regex尝试:

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

事实上,这个看起来有效,但我不确定它过滤得太多:

'*.*

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

而Meld中的过滤器代码将愉快地接受覆盖(和删除(多行的regex,这导致diff看到的文本和我们显示的文本,因此所有的更改块都将是错误的。

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

's*'/'*.*|'s*'*.*

很明显,meld不接受所有的python正则表达式作为文本过滤器,括号内没有多行或"|"。因此,该解决方案排除了以星号开头的行和带有可选空格的"/*"。它并不能准确地过滤掉所有php注释,但很可能适用于您的文件。

还可以看看:https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

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

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