Я ищу сделать поиск заменить регулярными выражениями в Sublime Text 2. Документация по этому довольно анемична. В частности, я хочу сделать замену для групп, так что-то вроде преобразования этого текста:
Hello my name is bob
И этот поисковый термин:
Найти то, что: my name is (\w)+
Заменить: my name used to be $(1)
Поисковый термин работает просто отлично, но я не могу найти способ сделать замену с помощью группы регулярных выражений.
источник
$0
?\0
равно нулевому символу и\0ddd
используется как escape для символа с кодовой точкой ddd). Тем$0
не менее, похоже, что используется в Sublime2 в качестве «метки выхода» в соответствии с этой страницей (хотя у меня возникают проблемы с поиском достаточного количества примеров, чтобы понять, как именно используется метка выхода в Sublime2).$0
используется в Sublime Text 2/3, чтобы поместить курсор при выходе из расширения фрагмента. Больше на отрывках .$0
это полное совпадение с регулярным выражением;$1
первая группа захвата.Кстати, в вопросе выше:
За:
Найти часть:
С заменой части:
Вернется:
Изменить найти часть на:
И заменить будет то, что вы ожидаете:
Хотя (\ w) + будет соответствовать "bob", это не та группа, которую вы хотите заменить.
источник
Хотя предыдущий ответ верен, важно подчеркнуть это! Все совпадающие сегменты в строке поиска, которые вы хотите использовать в замещающей строке, должны быть заключены в
( )
скобки , в противном случае эти совпадающие сегменты не будут доступны для определенных переменных, таких как$1
,$2
или\1
,\2
и т. Д.Например, мы хотим заменить «em» на «px», но сохранить цифровые значения:
margin: $1px
илиmargin: \1px
margin: ([0-9]*)em
// с круглыми скобкамиmargin: [0-9]*em
ПРИМЕР ПРАВИЛЬНОГО СЛУЧАЯ: Использование
margin: ([0-9]*)em
строки поиска (с круглыми скобками). Заключите желаемый совпадающий сегмент (например,$1
или\1
) в( )
круглые скобки следующим образом:margin: ([0-9]*)em
(с круглыми скобками)margin: $1px
илиmargin: \1px
НЕПРАВИЛЬНЫЙ ПРИМЕР ПРИМЕРА: Использование
margin: [0-9]*em
строки поиска (без скобок). Следующий шаблон регулярного выражения будет соответствовать желаемым строкам, но совпадающие сегменты не будут доступны в замененной строке в качестве переменных, таких как$1
или\1
:margin: [0-9]*em
(без скобок)margin: $1px
илиmargin: \1px
источник
Вот наглядная презентация утвержденного ответа.
источник
$_SESSION[(\w+)
? спасибоОбратите внимание, что если вы используете более 9 групп захвата, вы должны использовать синтаксис
${10}
.$10
или\10
или не\{10}
будет работать.источник
1
ко второй группе захвата, вам нужно использовать такие фигурные скобки, как${2}1
; $ 21 относится к 21-й группе захвата, которая не существует.Глядя на статью Sublime Text Unofficial Documentation о поиске и замене , похоже, что
+(.+)
это группа захвата, которую вы, возможно, захотите ... но я лично использовал,(.*)
и она работала хорошо. Чтобы ЗАМЕНИТЬ, как вы говорите, вам может понравиться этот разговор на форумах , в частности, этот пост, в котором говорится просто использовать$1
для использования первой захваченной группы.А поскольку картинки лучше слов ...
Перед:
После:
источник