2016-10-29 6 views
0

Мне нужно разбить две разные версии одного и того же приложения. Файлы подписаны с лицензиями и эта лицензия изменилась.Regex php multiline comment (Meld)

Я не хочу, чтобы файлы, содержащие лицензию только diff, подписывались как разные.

Я использую Meld как программное обеспечение diff, и это позволяет регулярное выражение.

<?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?

Regex пытался:

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

На самом деле это одна смотрит на работы, но я не уверен, что это фильтрация слишком много:

\*.* 

UPDATE:
Это не представляется возможным: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

В то время как код фильтра в Meld с радостью примет регулярное выражение, которое покрывает (и удаляет) несколько строк, , это вызывает несоответствие строк между t ext diff видит и отображаемый текст , поэтому все блоки изменений будут неправильными.

Разный подход заключается в удалении строк из файлов перед их обработкой.

+2

вы можете сказать конкретную картину вы пробовали? – rock321987

+0

Сначала попробуйте простое регулярное выражение, чтобы увидеть, работает ли оно вообще, например '\ d +', чтобы соответствовать цифрам. –

+0

Я пробовал, и он отлично работает (если, например, лицензионное шоу 2006 с одной стороны и 2009 на другом, это не считается как разность) – WonderLand

ответ

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

Очевидно, что meld не принимает все регулярное выражение python как текстовый фильтр, не многострочный, ни «|» внутри скобок. Таким образом, это решение исключает строки, начинающиеся со звезды, и «/ *» с дополнительными пробелами. Он не отфильтровывает все комментарии php точно, но может хорошо работать для ваших файлов.

также посмотреть на что: https://mail.gnome.org/archives/meld-list/2011-December/msg00004.html

+0

нет отличия – WonderLand

+0

спасибо, что обратили внимание на эту ошибку/ограничение. – WonderLand

0

это регулярное выражение проще для многострочного использования:

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

Вы попробовали это с программой Meld diff? – WonderLand