Как я могу заменить определенный шаблон в Notepad ++ / Visual Studio - PullRequest
2 голосов
/ 17 апреля 2019

Я использую Visual Studio.Во всем приложении в коде SCSS я преобразую все единицы px в rem с помощью функции.

Например:

padding: 16px 32px 48px --> padding: rem(16) rem(32) rem(48), что соответствует padding: 1rem 2rem 3rem.

Теперь по какой-то причине мне нужно преобразовать все rem единицы обратно в px единицы.Для этого я хочу идентифицировать шаблон rem(xyz) и заменить его на xyz px.

Пример:

.wrapper{
    font-size: rem(40);
    .content{
        padding: rem(20) rem(10) rem(30);
    }
}

.wrapper{
    font-size: 40px;
    .content{
        padding: 20px 10px 30px;
    }
}

Пожалуйста, дайте мне знать, как я могу добиться этого, используя Find & Replaceинструмент в Notepad ++ или Visual Studio.

rem\((.*?)\) -> Это регулярное выражение идентифицирует шаблон.Я пытался использовать одну и ту же захваченную группу и заменить ее таким образом \((.*?)\)px, но безуспешно.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Просто найди,

rem\((\d+)\)

и заменить на,

$1px

, где rem соответствует литералу rem, а \( соответствует литералу (, тогда (\d+) захватывает одну или несколько цифр и захватывает в group1, которая будет использоваться при замене сопоставленного текста с тем же номером и, наконец, \) соответствует буквальному )

В замещающем тексте $1 представляет текст, захваченный в group1, и, следовательно, заменяет сопоставленный текст на число и px, как вы хотели.

Regex Demo

1 голос
/ 17 апреля 2019

Если вы хотите сопоставлять цифры без десятичного значения, вы можете использовать группу захвата, чтобы сохранить цифры в скобках:

\brem\((\d+)\)

Regex demo

И заменить на:

$1px

Если вы также хотите сопоставить десятичные дроби, вы можете использовать:

\brem\((\d+(?:\.\d+)?|\.\d+)\)
  • \brem Граница слова и совпадение rem
  • \( Совпадение ( символ
  • ( Захватывающая группа
    • \d+(?:\.\d+)? Соответствует 1+ цифрам, за которыми следует дополнительная часть, которая соответствует точке и цифре
    • | или
    • \.\d+ Совпадение точки и 1+ цифр
  • ) Закрыть группу захвата
  • \) Совпадение ) символ

regex demo

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