Разбиение CSS на блоки с помощью регулярных выражений - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть таблица стилей:

a,b,c { stuff
        lots of it
}

b { more stuff }

.test { even more }

Я хочу, чтобы регулярное выражение разбивало его на каждую из трех частей, отделяя их от '}' до '}', чтобы все мои запросы работали нормально (за исключением первого случая, очевидно).

Ответы [ 3 ]

1 голос
/ 13 сентября 2010

В Ruby 1.9 вы можете

result = subject.split(/(?<=\})/)

, т.е. разделить строку в позиции, следующей за }. Тем не менее, Ruby 1.8 не поддерживает утверждения за кадром, поэтому он не будет работать там. И, конечно, у вас будут проблемы с вложенными скобками, но вы сказали, что это не должно быть проблемой с вашими данными.

В Ruby 1.8 (не могу попробовать здесь) должно работать следующее:

result = subject.split(/(\})/)

хотя теперь закрывающие скобки больше не будут частью соответствующих элементов. Таким образом, test {a} test2 {b} будет разбит на test {a, }, test2 {b, } плюс пустую строку.

0 голосов
/ 29 сентября 2010
.scan(/.+?\}/m)
0 голосов
/ 13 сентября 2010

Это может быть неуместно в вашем случае, но вы можете использовать синтаксический анализатор CSS, чтобы разделить ваш файл CSS по токенам и работать с ними независимо и безвредно.

  1. css_parser этим руководством );
  2. CSSPool (я рекомендую этот только потому, что вам нужно только получить определенные селекторы из вашего CSS; этот похож на SAX-парсер для CSS).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...