2016-10-29 2 views
0

J'ai besoin de diff deux versions différentes de la même application. Les fichiers sont signés avec une licence et cette licence a été modifiée.Regex php multiline comment (Meld)

Je ne veux pas que les fichiers qui contiennent le différentiel de licence seulement soient signés comme étant différents.

J'utilise Meld comme logiciel de diff et il permet regex.

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

Il y a des questions similaires, mais personne ne travaille pour moi:

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

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

Regex essayé:

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

En fait, celui-ci ressemble à des œuvres mais je ne suis pas sûr qu'il est le filtrage trop:

\*.* 

MISE À JOUR:
Ceci est impossible: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

Alors que le code de filtre dans Meld acceptera volontiers une regex qui couvre (et supprime) plusieurs lignes, cela provoque des discordances de ligne entre le t ext le diff voit et le texte que nous affichons, donc tous les blocs de changement seront erronés.

Une approche différente consiste à supprimer les lignes des fichiers avant de les transformer en fusion.

+2

peut vous dire le modèle spécifique que vous avez essayé? – rock321987

+0

Veuillez d'abord essayer une simple regex pour voir si elle fonctionne, comme '\ d +' pour faire correspondre les chiffres. –

+0

Je l'ai essayé et ça marche bien (si par exemple le show de licence 2006 d'un côté et 2009 de l'autre n'est pas compté comme un diff) – WonderLand

Répondre

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

bien évidemment n'accepte meld pas tous regex python comme un filtre texte, pas multiligne ni « | » entre parenthèses. Cette solution exclut donc les lignes commençant par une étoile et "/ *" par des espaces optionnels. Il ne filtre pas tous les commentaires PHP avec précision, mais peut très bien fonctionner pour vos fichiers.

ont également un coup d'œil à ce: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

+0

aucun diff ne sont montrés – WonderLand

+0

merci de signaler ce bug/limitation. – WonderLand

0

cette regex est plus facile pour l'utilisation multiligne:

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

l'avez-vous essayé avec le programme Meld diff? – WonderLand