Regex найти заменить множителем в Atom или Sublime - PullRequest
0 голосов
/ 16 февраля 2019

Я хотел бы заменить все вхождения определенного набора числовых значений их соответствующими скалярными коэффициентами, используя функцию поиска / замены регулярного выражения в Atom или Sublime, предпочтительно Atom.

Например, преобразовать

headerContainer: {
    fontSize:'1em',
    padding: '1.5rem',
},

до

headerContainer: {
    fontSize: 16,
    padding: 24,
},

Моя находка регулярного выражения:

(')([\d.]+)r?em(')

Возможность замены моего регулярного выражения:

$2 \* 16

1 Ответ

0 голосов
/ 17 февраля 2019

Как уже упоминалось в комментариях к вашему вопросу, это невозможно напрямую с помощью поиска и замены регулярного выражения, но, тем не менее, это возможно в Sublime Text (и, возможно, в Atom, если он имеет аналогичную функциональность), используя встроенную функциональность..

Чтобы сделать это в Sublime, вы хотите использовать комбинацию Find All, чтобы выделить весь текст, и встроенную команду Arithmetic, чтобы изменить выбор.Особенности работы Arithmetic команды можно найти в этом ответе , поэтому я не буду здесь это освещать.

Чтобы сделать то, что вы хотите здесь, выполните следующее:

  1. Используйте панель Find (или панель Replace) для поиска регулярного выражения '[\d.]+r?em', но нажмите кнопку Find All на панели, которая выберетвсе соответствующие элементы в буфере.

  2. Используйте команду Arithmetic из палитры команд, введите выражение round(float(x.strip("'rem"))*16) и нажмите клавишу ввода для запуска команды.

Выражение здесь изменяет выделенный текст (x), удаляя одинарные кавычки и символы rem, превращает полученную строку в значение с плавающей запятой, выполняет умножение, а затем округляетзначение.

Результат примерно такой:

Example of technique in action

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...