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