Как найти/заменить часть поиска по подстановочным знакам в Notepad++

Простой пример.
Когда я редактирую CSS. Я хочу найти все фоны независимо от последовательности чисел, поэтому я использую .*

~~~Пример:
Найти background: #.*;

(Найдено 4 совпадения)

Строка 12: фон: #111111;

Строка 24: фон: #222222;

Строка 36: фон: #333333;

Line48: фон: #444444;

Найдено (#) совпадающих строк
Отлично, работает отлично!

(В следующей части у меня возникли проблемы)

Теперь я хочу заменить или, в данном случае, заключить все эти строки в /* */, не удаляя отдельные числа.
(Чтобы удалить определенные фоны, когда я закончу редактирование страницы.)

~~~Пример:
Заменить на /* background: #.*; */

Не дает мне это:

Line12: /* background: #111111; */

Line24: /* background: #222222; */

Line36: /* background: #333333; */

Line48: /* background: #444444; */

Вместо этого я получаю следующее:

Строка 12: /* фон: #.*; */

Строка 24: /* фон: #.*; */

Line36: /* фон: #.*; */

Line48: /* фон: #.*; */

Я не могу понять, как сделать так, чтобы числа (независимо от разнообразия комбинаций) не менялись в коде, а только добавить /* вокруг кода */


person MatrixNinja    schedule 22.05.2014    source источник


Ответы (2)


Измените свой поиск на что-то менее зависимое от наличия одного пробела (скажем, вы нажали Tab на один или два).

(background:.*?;)

И для вашей замены используйте:

/* \1 */

Чего вам не удалось сделать, так это зафиксировать совпадающее значение для повторного использования в регулярном выражении замены. () в поиске будет храниться в параметре, который можно использовать как \1.

person ubergoober    schedule 22.05.2014
comment
Это хорошо .. именно то, что я искал! Я использую несколько файлов css, один специально для редактирования, так как я могу отменить это и удалить /* */ ? - person MatrixNinja; 23.05.2014
comment
Чтобы изменить это, найдите \/\* (background:.*?;) \*\/ и замените на \1 .. на этот раз вам не нужно беспокоиться о количестве пробелов, поскольку при первом поиске вы указали один пробел после /* и перед */. Если вы хотите беспокоиться об этом, вы можете дополнительно улучшить свое регулярное выражение для обработки возможных нескольких пробелов. - person ubergoober; 23.05.2014
comment
ответ phew неточен, но близок. Поскольку шестнадцатеричные цветовые коды идут от 0 до F, вам нужно сопоставить [0-9A-Fa-f]+ внутри () - person ubergoober; 23.05.2014
comment
СОВЕРШЕНСТВО!! Я думал точно так же о системе только числа. Очень приятный человек, сэкономил мне кучу времени! - person MatrixNinja; 23.05.2014

Шаблон поиска: background: #([0-9]+);

Заменить: /* background: #\1 */

([0-9]+) будет соответствовать числам и сохранит их в группе \1. Вы можете повторно использовать \1 во вводе «Заменить».

person phew    schedule 22.05.2014
comment
Вроде работает нормально, но не до конца. В цветовых схемах используются цифры и буквы от 0 до F. - person MatrixNinja; 23.05.2014
comment
Первый ответ - это регулярное выражение намного лучше моего, мое очень общее. Вы можете расширить его буквами от A до F следующим образом: (background: #[0-9a-fA-F]{6};?) и использовать /* \1 */ в качестве замены. Он также будет соответствовать background: #DEDEDE, поэтому последний атрибут CSS в области действия CSS не нуждается в точке с запятой ;, iirc. Кроме того, он будет соответствовать только цветовому коду длиной 6 символов. Мой ответ был быстрым, это может считаться плохой практикой, но я обычно использую ленивое универсальное регулярное выражение с широким диапазоном соответствия для подобных проблем, если они выполняют свою работу. - person phew; 23.05.2014
comment
Хорошо, это хорошо и для других вещей. Я не думаю, что лучшие практики применимы к редактированию с помощью инструментов, а только к реализации кода. В любом случае, мне нравятся оба ответа по разным причинам. Спасибо за подробности, я уверен, что смогу использовать это где-нибудь по ходу дела. Мой вопрос был довольно общим сам по себе, поэтому для ответа не требовалось много глубины. Очень признателен..=D - person MatrixNinja; 23.05.2014
comment
Ха-ха, да, вы, вероятно, потратили бы гораздо больше времени на регулярное выражение, чем на саму реализацию, если бы вы шли «правильным путем» с такими проблемами, как установка комментариев. Регулярное выражение далеко не завершено, учитывая, что могут быть и другие значения background, такие как background: #00ff00 url('image.gif') no-repeat fixed center; или background: red. Regex — это отдельная наука, хотя и очень полезная. Нп, спокойной ночи! - person phew; 23.05.2014