Используя Sublime Text найти / заменить, чтобы добавить атрибут во входной тег - PullRequest
0 голосов
/ 10 июня 2019

У меня есть простые теги ввода, похожие на это

<input type="password" name="repassword" placeholder="Enter password">

Я хочу использовать Sublime Text 3 и добавить aria-label с тем же кодом, что и в placeholder. Конечный результат я хочу быть таким

<input type="password" name="repassword" placeholder="Enter password" aria-label="Enter password">

Я поместил это регулярное выражение в поле Поиск <input.*?placeholder="(.*?)"

И это внутри Заменить Подано <input.*?placeholder=".*?" aria-label="$(1)"

Но я получаю это <input.*?placeholder=".*?" aria-label="$(1)">

Обновление: я включил кнопку RedEx в Sublime Text, это не проблема. Как поиск работает отлично.

1 Ответ

1 голос
/ 10 июня 2019

Здесь происходит несколько проблем.

Последовательность символов .*? не имеет никакого особого значения в тексте замены, только в исходном поиске.Таким образом, включение этого в текст замены заменяет эти точные символы обратно.Если вы намереваетесь вернуть тот же текст, который был там изначально, вам нужно capture это так же, как и с текстом placeholder.

Во-вторых, синтаксис для вставки захваченного текстаобратно \1 или $1;$(1) также не является специальным и просто вводит эти символы напрямую.

Чтобы расширить исходный пример, вы хотите захватить первый .*?, а также второй, и изменить текст замены в соответствии с:

Найти: <input(.*?)placeholder="(.*?)" Заменить: <input$1placeholder="$2" aria-label="$2"

Обратите внимание, что первый захват пронумерован 1, второй 2 и т. Д.

...