2010-09-13 2 views
0

У меня есть таблица стилей:Разбиение CSS в блоки с регулярным выражением

a,b,c { stuff 
     lots of it 
} 

b { more stuff } 

.test { even more } 

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

ответ

1

В Ruby 1.9 можно

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

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

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

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

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

+0

Кажется, что обычный сплит ('}') - самый простой способ. Не уверен в 1.9 на моем хосте. – Dex

0

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

  1. css_parserthis guide);
  2. CSSPool (Я рекомендую это только потому, что вам нужно только получить определенные селекторы из вашего CSS, это похоже на SAX-парсер для CSS).
+0

Основная причина, по которой я должен tokenize, состоит в том, что мне нужно оставить все, что содержит селектор тела, из уравнения. Это будет включать строку типа a, li, body, html {...}. Не уверен, что эти драгоценные камни облегчат жизнь или нет. – Dex

Смежные вопросы