Сумасшедшее регулярное выражение: добавить предыдущий селектор CSS - PullRequest
1 голос
/ 24 августа 2011

Популярный способ написания CSS выглядит так:

#report-page aside.sidebar {
  …
}

  #report-page aside.sidebar li {
    …
  }

    #report-page aside.sidebar li a {
      … 

Написание этого утомительно.Я хочу попытаться автоматизировать повторную часть.(Препроцессоры, такие как LESS, решают эту проблему, но я не могу использовать это в существующем приложении.)

Espresso.app может вставить динамический фрагмент текста:

    <!-- The matched suffix allows you to capture information about the text 
         preceding the insertion point. Specify a regular expression here. -->
    <matched-suffix>(\s+)(is a vegetable)?</matched-suffix>

    <!-- The transform-into element is a regex replacement expression, and can use 
    the captured strings from matched-suffix to generate a conditional snippet. -->
    <transform-into>(?2:\1is a vegetable:\1is fantastic and )</transform-into>

Можете ли вы помочь мне написатьрегулярное выражение, которое ищет первую предыдущую фигурную скобку { и возвращает все, что находится перед ней в этой строке, за исключением символов табуляции и пробелов?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Препроцессоры типа LESS решают эту проблему, но я не могу использовать его в этом существующем приложении.

Да, вы можете.Ваш проект / фреймворк не должен поддерживать его, и вам не нужно переписывать весь CSS.

Например, синтаксис scss полностью поддерживает синтаксис CSS, поэтомуВы можете просто переименовать файл .css в .scss, и он просто работает.После этого вы можете начать использовать синтаксис scss.

См. http://sass -lang.com /

У инструмента sass / scss есть переключатель --watch, который позволяет вамчтобы запустить его в фоновом режиме и автоматически преобразовывать ваш файл .scss в файл .css при каждом изменении файла при его разработке:

sass --scss --watch file.scss:file.css

Если вы предпочитаете синтаксис sass, sass поставляется сsass-convert инструмент, который может конвертировать из и в css, scss и sass форматы:

sass-convert --from css --to sass file.css file.sass

Для вашего вопроса регулярного выражения, попробуйте это:

\s*([^\s].*?)\s*{

Это будет соответствовать селектору без пробелов / отступов до и после селектора.

0 голосов
/ 24 августа 2011
^[^{]+

Это регулярное выражение соответствует всему тексту от начала строки до первой открывающей фигурной скобки.Он будет соответствовать всей строке в строках, которые не имеют фигурных скобок;добавьте буквально фигурную скобку в конце, если это проблема.

^[^{]+\{
...