GREP — это ж вам не алгебра
В одной из работ, выполняемых мной, начальник распорядился раскрасить числа в таблицах таким образом: от 0 до 49 — красным цветом, от 50 до 59 — оранжевым, и т.д. до 100, мимоходом обронив, что такое легко сделать при помощи GREP. Я встал в ступор, мозги заклинило. Полнейший когнитивный диссонанс! «Какой нафиг GREP? GREP — это ж вам не алгебра!» Спрашивать у начальника решительно не хотелось. Спросить — это значит уронить в его глазах уровень своей квалификации. Вручную красить каждое число не хотелось тем более. Размышления и повтор возможностей GREP не помогли. Отчаявшись, совсем уж было собрался звонить Михаилу Иванюшину и заказывать скрипт, так как таблиц в моей работе не одна сотня, а Михаила знаю давно как сильнейшего мастера скриптов. Чего стоит только его знаменитейший скрипт DOTextOК! Ну да ладно, не о нем пост.
Воистину, не пропадет в жизни тот, кто умеет искать в интернете! Ни на что не надеясь, будучи уверенным на все сто, что подобная задача не для GREP, для очистки совести начал поиск и я. О, счастье, в группе фейбука «The Treasures of GREP» нашелся подобный пример, с помощью которого мне удалось выполнить полученное задание. GREP — это, конечно, не алгебра, но решать подобные задачи, оказывается, можно!
Если у вас при чтении условия этой задачи тоже возник когнитивный диссонанс, то читайте далее.
В составе абзацного стиля для чисел делается GREP-стиль, состоящий из нескольких Grep-выражений. Каждое Grep-выражение применяет нужный цвет при помощи символьного стиля. В каждом символьном стиле прописан только цвет символов. Вот пример параметров символьного стиля Red:
Итак, надо покрасить числа в таблице:
от 0 до 49 — красным цветом;
от 50 до 59 — оранжевым;
от 60 до 80 — голубым;
от 80 до 100 включительно — зеленым;
больше 100 — остаются черными.
Сделаем символьные стили на все цвета, кроме черного.
GREP-стиль, состоящий из нескольких grep-выражений, выглядит так:
Например, grep-выражение для выделения красным: \b(\d|[1-4]\d)\b — видим, что искомое число может быть или однозначным от 0 до 9 (задается первым \d), или двузначным — задается выражением в квадратных скобках и вторым \d (вертикальная палочка как разделитель между этими вариантами). В случае двузначного числа в разряде десятков должны быть цифры от 1 до 4, а в разряде единиц — любая цифра от 0 до 9 (\d). Таким образом в искомый диапазон попадают числа от 0 до 49. Выражение \b следует читать как «в пределах одного слова».
grep-выражение для поиска чисел от 50 до 59 выглядит так: \b(5\d)\b. Ищется такое двузначное число, у которого число десятков — 5. А число единиц — от нуля до 9 (задается выражением \d).
Думаю, теперь вам уже понятны оставшиеся два grep-выражения.
Последние комментарии