регулярное выражение для добавления префиксов в классы верстки

Всем привет!
Необходимо в текстовом редакторе vscode с помощью регулярных выражений преобразовать строку вида:
class="dab alfa beta gamma-new delta"
в строку:
class="pre-dab pre-alfa pre-beta pre-gamma-new pre-delta"

Сам смог добиться только таких результатов:
class="([^\s]+)(( [^\s]*)*)"
заменяю строкой:
class="pre-$1 pre-$2"
Но результат не тот.

Что я делаю не так?


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте

Найти: (?<=class="[^"]*?)[^\s"]+(?=[^"]*")
Заменить: pre-$0

Подробности

  • (?<=class="[^"]*?) - блок предварительного просмотра назад, требующий наличия подстроки class=", потом 0 и более символов, отличных от ", как можно меньше, сразу перед текущей позицией в строке
  • [^\s"]+ - один и более символов, отличных от пробельных символов и двойной кавычки
  • (?=[^"]*") - блок предварительного просмотра вперёд, требующий наличия 0 и более символов, отличных от ", а затем " сразу после текущей позиции в строке.

$0 – обратная ссылка на целый текст совпадения. 

Пример:

введите сюда описание изображения

Результат:

class="pre-dab pre-alfa pre-beta pre-gamma-new pre-delta"
→ Ссылка