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

问题描述 投票:0回答:2

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

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

我使用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?

正则表达式尝试:

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

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

\*.*

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

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

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

php regex diff meld
2个回答
0
投票
\s*\/\*.*|\s*\*.*

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

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


0
投票

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

  .*\/\*[^\/]+\/\s
© www.soinside.com 2019 - 2024. All rights reserved.