/ regexp

Использование положительного look-behind условия

Находим все строки, у которых последний символ {, и перед ним нет пробела.

Недавно мне попался кейс, в нем надо было найти все строки в css файлах и добавить пробел до символа {.

Пример:

.clmn-xs-8{
  width: 66.66666667%;
}
.clmn-xs-7{
  width: 58.33333333%;
}
.clmn-xs-6{
  width: 50%;
}
.clmn-xs-5{
  width: 41.66666667%;
}

А нужно было сделать следующее:

.clmn-xs-8 {
  width: 66.66666667%;
}
.clmn-xs-7 {
  width: 58.33333333%;
}
.clmn-xs-6 {
  width: 50%;
}
.clmn-xs-5 {
  width: 41.66666667%;
}

Вобщем для соблюдения style guide.

Проблем здесь несколько,

  • много файлов (но я знаю, что они все имеют расширение *.css)
  • если искать в редакторе по простому регулярному выражению ([^\s]{$), то это
    прохая идея, потому что в выборку попадет не только фигурная скобка, но и символ перед ней

Для решегия этой задачи пришлось порыться в гугле и прочитать не ону статью по регуляркам. Вобщем помогла статья на хабре, очень рекомендую к прочтению.

После всех правок моя регулярка стала такой:

(?<=[^\s]){$

После этого можно открывать свой текстовой редактор, у меня это Sublime Text 3, в нем есть функция поиска по файлам. Вводим эту регулярку в поле Find, а в поле Where вводим путь для поиска файлов. А так же вводим в поле
Replace на что заменить найденные совпадения.

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