#regex #visual-studio-code #sublimetext3
#регулярное выражение #visual-studio-code #sublimetext3
Вопрос:
В моем файле Javascript я хочу заменить:
var user1 = {id: 'Alan Banks'};
var user2 = {id: 'Chris Daily'};
с
var user1 = {id: 'Alan_Banks'};
var user2 = {id: 'Chris_Daily'};
Я могу сопоставить имена пользователей со следующим регулярным выражением в VSCode, Sublime (и Dreamweaver тоже, от отчаяния):
id: '(.*?)'
Таким образом, группа захвата $1
теперь содержит содержимое id
свойства каждого пользователя.
Как я могу выполнить вторую часть моей операции, заменив пробелы в захваченной подстроке символами подчеркивания?
Ответ №1:
В коде Visual Studio вы можете использовать
Найти: (?<=id:s*'[^']*?)s(?=[^']*')
Заменить: _
Смотрите демонстрацию регулярных выражений. Подробные сведения:
(?<=id:s*'[^']*?)
— положительный прогноз, соответствующий местоположению, которому непосредственно предшествуетid:
, 0 пробелов,'
, а затем любые 0 или более символов, кроме'
как можно меньшего количестваs
— пробел(?=[^']*')
— положительный прогноз, который соответствует местоположению, за которым сразу следует 0 символов, отличных от'
и затем'
.
В Sublime Text 3, который поддерживает поиск и замену регулярных выражений PCRE, вы можете использовать
Найти: (?:G(?!A)|id:s*')[^'s]*Ks(?=[^']*')
Заменить: _
Смотрите другую демонстрацию регулярных выражений. Подробные сведения:
(?:G(?!A)|id:s*')
— конец предыдущего соответствия илиid:
, 0 пробелов и'
[^'s]*
— 0 символов, отличных от'
и пробеловK
— опускает весь текст, сопоставленный до сих порs
— пробел(?=[^']*')
— положительный прогноз, который соответствует местоположению, за которым сразу следует 0 символов, отличных от'
и затем'
.
Комментарии:
1. Спасибо — как новичок в регулярных выражениях, дополнительные пояснения очень ценятся