#css #regex
#css #регулярное выражение
Вопрос:
У меня есть файл CSS, и мне нравится извлекать все URL-адреса в моем редакторе регулярных выражений, заменяя любой другой символ в моем файле CSS пустым characterd.
Файл css выглядит так:
@font-face {
font-family: 'font_name';
src: url('http://my-site.ext/path/to/font/proximanova-light-webfont.eot');
src: url('http://my-site.ext/path/to/font/proximanova-light-webfont.eot?#iefix') format('embedded-opentype'),url('http://my-site.ext/path/to/font/proximanova-light-webfont.woff') format('woff'),url('http://my-site.ext/path/to/font/proximanova-light-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
и я использую следующее регулярное выражение для замены остальной части содержимого файла:
(?!(http[^'] )).
Но не работает.
Конечный результат, который мне нравится, должен быть таким:
http://my-site.ext/path/to/font/proximanova-light-webfont.eot
http://my-site.ext/path/to/font/proximanova-light-webfont.eot?#iefix
http://my-site.ext/path/to/font/proximanova-light-webfont.woff
http://my-site.ext/path/to/font/proximanova-light-webfont.ttf
Что-то не так с этим шаблоном?
Комментарии:
1. Почему бы не сопоставить URL-адреса напрямую?
2. Потому что я не использую какой-либо язык программирования. Я открыл свой редактор регулярных выражений, я вставил CSS в редактор, и мне нравится удалять все, кроме URL-адресов.
3. Какой редактор регулярных выражений вы используете?
4. regexr.com Автономная версия. Обратите внимание, что текущая онлайн-версия этого редактора не поддерживает замену. Если вы хотите увидеть редактор, который я использую в онлайн-версии, попробуйте это regexr.com/v1
5. IMO лучший автономный инструмент — RegexBuddy, и вы определенно можете найти совпадения. Вы можете попробовать это бесплатно.
Ответ №1:
Вот решение, которое будет работать в regex101 и, возможно, в других онлайн-инструментах.
Используйте это регулярное выражение (я избежал косых черт для регулярного выражения101):
Поиск:
http[^'] (*SKIP)(*F)|.
Заменить: пустая строка
В демонстрации посмотрите на нижнюю панель (замены). Скопируйте, вставьте, и у вас есть ваши ссылки.
Как это работает
Левая часть чередования |
соответствует завершению urls
, затем намеренно завершается ошибкой, после чего движок переходит к следующей позиции в строке. Правая сторона соответствует одному символу, который будет заменен пустой строкой. Это может показаться трудоемким, но это самый эффективный способ сделать это, который я знаю, учитывая спецификации.
Если вы хотите оставить пробелы и новые строки, используйте это вместо:
http[^'] (*SKIP)(*F)|S
Комментарии:
1. Потрясающе, рад это слышать! Добавлю краткое объяснение.
![]()