Поиск регулярных выражений заменить в Sublime Text 2
Я ищу, чтобы сделать поиск заменить регулярными выражениями в Sublime Text 2. The документация на этот скорее анемичный. В частности, я хочу сделать замену на группы, поэтому что-то вроде преобразования этого текста:
Hello my name is bob
и этот термин для поиска:
найти: my name is (w)+
заменить на: my name used to be $(1)
термин поиска работает просто отлично, но я не могу понять, как на самом деле сделать замену с помощью regexp группа.
5 ответов
обычно обратная ссылка либо или
(обратная косая черта) для первой группы захвата (первое совпадение шаблона в круглых скобках). Так может попробовать:
my name used to be
или
my name used to be
обновление: Как указывали несколько человек, ваш исходный шаблон захвата неверен и будет захватывать только конечную букву имени, а не все имя. Вы должны использовать следующий шаблон, чтобы захватить все буквы имя:
my name is (\w+)
кстати, в вопросе выше:
для:
Hello, my name is bob
найти:
my name is (\w)+
С заменой части:
my name used to be
вернутся:
Hello, my name used to be b
изменить найти часть к:
my name is (\w+)
и заменить будет то, что вы ожидаете:
Hello, my name used to be bob
в то время как (\w)+ будет соответствовать "bob", это не группировка, которую вы хотите для замены.
используйте скобки ( ) в строке поиска
здесь важно подчеркнуть! Все соответствующие сегменты в строке поиска что вы хотите использовать в своем строку замены должно быть заключено в скобки (), иначе эти сопоставленные сегменты не будут доступны с переменными, такими как $1, $2,...ни \1, \2,.. и т. д.
пример:
мы хотим замените 'em' на 'px', но сохраните числовые значения:
margin: 10em
margin: 2em
поэтому мы используем margin: px
в качестве строки замены.
правильно: принять нужные соответствуют сегмента
( )
скобках следующим образом:
найти: margin: ([0-9]*)em
(со скобками)
ЗАМЕНИТЬ НА: margin: px
результат:
margin: 10px
margin: 2px
неправильно: следующий шаблон регулярного выражения будет соответствовать нужные строки, но сопоставленные сегменты не будут доступны в замененной строке в качестве переменных, таких как :
найти: margin: [0-9]*em
(без скобок)
ЗАМЕНИТЬ НА: margin: px
результат: ( неопределено)
margin: px
margin: px
обратите внимание, что если вы используете более чем 9 групп захвата, вы должны использовать синтаксис .
или
или
\{10}
будет не работа.