В eclipse можно ли использовать согласованную строку поиска как часть строки замены при выполнении поиска и замены регулярного выражения?
В принципе, я хочу заменить все вхождения
variableName.someMethod()
с:
((TypeName)variableName.someMethod())
Где variableName может быть любым именем переменной вообще.
В sed я мог бы использовать что-то вроде:
s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
То есть, и представляет согласованную строку поиска. Есть ли что-то подобное в Eclipse?
Спасибо!
Да, "()" захватывает группу. вы можете использовать его снова с помощью $i, где я - группа захвата i'th.
так:
search: (\w+\.someMethod\(\))
replace: ((TypeName)$1)
Подсказка : CTRL + пробел в текстовых полях дает вам всевозможные предложения для написания регулярных выражений. (Я боюсь, что клавиша "вниз", чтобы перейти к списку предложений, удаляет ваш вход в текстовое поле. Раздражает небольшую ошибку)
Использование...
поиск = (^. * импорт) (. *) (\ (. * \):)
replace = $1 $2
... заменяет...
from checks import checklist(_list):
... с...
from checks import checklist
Блоки в регулярном выражении обозначаются скобками (которым не предшествует "\" )
(^. * import) находит "из импорта чеков" и загружает его в 1 доллар (начало затмения начинается с 1)
(. *) найдите следующее "все", пока не наступит следующее "(" и загрузит его до $2. $2 остановки в "(" из-за следующей части (см. следующую строку ниже)
(\ (. * \):) говорит "при первом столкновении" ( "после запуска блока $2... остановить блок $2 и начать $3. $3 загружается с помощью" ( "любой текст" ): "или, в Например," (_list):"
Затем в замене просто поставьте $1 $2, чтобы заменить все три блока только двумя первыми.
NomeN ответил правильно, но этот ответ не был бы очень полезен для начинающих, таких как я, потому что у нас будет другая проблема, и мы не будем" t умеет использовать RegEx там. Поэтому я добавляю немного объяснения этому. Ответ
search: (\ w + \. someMethod\(\))
replace: ((TypeName) $1)
Здесь:
В поиске:
Первый и последний '(' ')' отображает группу в регулярном выражении
'\ w' отображает слова (буквенно-цифровые + подчеркивание)
'+' отображает один или несколько (то есть один или несколько буквенно-цифровых символов + подчеркивание)
'' является особым символом, который изображает любой символ (т.е. + означает один или несколько символов). Потому что это особый символ изобразить '.' мы должны дать ему escape-символ, т.е. '.'
'someMethod' задается так, как нужно искать.
Две скобки '(', ')' задаются вместе с escape-символом потому что они являются особым символом, который используется для отображения группы (мы обсудим группу в следующей точке)
Взамен:
Дается ' ((TypeName) $1)', здесь $1 изображает группа. Это все символы, которые заключены в первый и последняя скобка '(', ')' в поле поиска
Также убедитесь, что вы проверили опцию "Регулярное выражение" в найти блок замены
Более подробную информацию о RegEx можно найти в http://regexr.com/.
По крайней мере, в STS (SpringSource Tool Suite) группы нумеруются начиная с формы 0, поэтому заменить строку будет
replace: ((TypeName)$0)
Для кого-то нужно объяснение и пример того, как использовать regx on eclipse, надеюсь, что это будет полезно. Вот моя проблема.
Я хочу переименовать
/download.mp4^lecture_id=271
to
/271.mp4
И их может быть много.
Как вы должны это делать.
Затем нажмите кнопку поиска/замены