Страница 1 из 1

Сравнение по содержимому: кроме заданных разделителей

Добавлено: Вт окт 10, 2023 13:10
790
Сравнение по содержимому: 2 текстовых файла таблицы стилей css. Там есть строки "закоментированные", начинаются с "/* " и такие же "незакоментированные", начинаются с @. Если разница только в наличии "/* " в начале строки, то такие строки меня не интересуют.
Отсюда вопрос:
1. Как искать различия в любом месте строки, кроме тех строк, у которых единственное различие только в "/* " в начале строки.
2. Или, если включить "Метод 3: Находить ... возле заданных разделителей", то как редактировать этот список разделителей, чтобы различие возле этих самых разделителей НЕ учитывалось, т.е. как бы наоборот.

Извиняюсь за спутанные объяснения, мне пока ещё не указали на нужные термины...

Добавлено: Вс апр 21, 2024 00:01
Orion9
790
Кажется, я в программе Beyond Compare видел подобный функционал.

Добавлено: Вс апр 21, 2024 05:58
Avada
790
1. Произвольные начальные символы можно исключить из сравнения парой экспериментальных ключей CompareSkipFirstL (количество игнорируемых символов в файле слева) и CompareSkipFirstR (их количество в файле справа). Подробности в справочнике по ключам, в официальной справке TC функция (хотя и старая) до сих пор не документирована, поскольку недостаточно доработана. Есть также свежий ключ CompareSkipLineNumbers, но он про другое, там только начальные цифры не учитываются (тут подробности по-русски вскоре будут в более новой версии справочника).
2. Что касается метода 3, то в ключе CompareResyncSeparators имеется по умолчанию определённый набор символов-разделителей (см. тот же справочник). Можно попробовать явным образом указать его значением только то, что вам нужно, не включая ненужное.

Добавлено: Вс апр 21, 2024 09:05
Monarch-LFV
790
Есть еще программа Compare it! (аналог Beyond Compare).
Там можно задать регулярным выражением разные варианты для исключения. В вашем случае примерно так:

Код: Выделить всё

^\s*/\*.*
"Заменить" оставить пустое. Будет пропускать при сравнении строки с комментариями вида " /* comment".

Добавлено: Вс апр 21, 2024 10:17
Orion9
Сейчас проверил. К Beyond Compare можно скачать отдельный шаблон формата .css:
https://www.scootersoftware.com/kb/more ... rm=Windows
Судя по тому, что комментарии на вкладке Grammar к этому формату обозначены как Comment=Text from /* to */, то должно все работать, но я не проверял.

Добавлено: Пн апр 22, 2024 15:36
790
Avada Спасибо.
1. С CompareSkipFirstL так не работает, потому что строки, которые начинаются с @ не имеют 3х пробелов вместо "/* " перед собой:

/* @text
/* @text
@text
/* @text
@text
@text

CompareSkipFirstL просто уберёт первые три знака во всех строках.

2. Также не работает.
Меня интересуют строки, где произошли какие-то изменения в text, чтобы когда я ставлю галочку "Только различия", показывались только эти строки. Если в строке разница ТОЛЬКО в наличии/отсутствии "/* ", то такие строки не интересны, потому что это я сам делал эти изменения.

Добавлено: Вт апр 23, 2024 00:11
Monarch-LFV
790
С уточнением стало понятнее. То, о чем я писал выше, но с регуляркой:

Код: Выделить всё

^\s*/\*\s*
Должно помочь. Получается, просто перед сравнением заменяется «/* » на ничего, а соответственно эта строка становится строкой без комментария, и если она равна в таком виде со строкой в другом файле, то выделяться не будут.

Добавлено: Вт апр 23, 2024 13:07
790
Monarch-LFV
Да, спасибо, это работает. Но... не будем здесь обсуждать посторонний софт ;) И всё-таки хотелось бы делать это в ТС.