Поиск и замена регулярных выражений в Visual Studio 2003 - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть большая база кода C ++, которую я делаю рефакторингом, когда ряд функций стал избыточным и, следовательно, должен быть удален. Поэтому я хотел бы заменить

MyFunc(Param)

с

Param

где Param может быть буквальным значением, переменной, вызовом функции и т. Д. Из онлайн-справки я понял, что параметры поиска должны быть

MyFunc/({+}/(

и параметры замены просто

/1

Но это дает мне синтаксическую ошибку в моем шаблоне. Я новичок в поиске и замене на регулярные выражения в визуальной студии. Можно ли легко достичь вышеизложенного? Я просматривал похожие вопросы на этом сайте, которые показывают, что я примерно на правильном пути, но, похоже, что-то упустил.

Редактировать: Если вы можете ответить на вышесказанное, как насчет того, является ли оно частью классового предпочтения, например,

MyClass.MyFunc(Param) 

или

MyClass->MyFunc(Param)

(FWIW, я также взял копию VisualAssist в надежде, что он сможет это сделать, но, похоже, не сможет справиться с этой ситуацией).

Второе редактирование: Спасибо Джо за правильный ответ, но всем, кто использует этот подход, остерегайтесь некоторых подводных камней,

MyFunc(MyArray[MyOtherFunc(x)])

заканчивается как

MyArray[MyOtherFunc(x])

и

MyFunc((SomeType)x)

заканчивается как

(SomeTypex)

После того, как вы выполните поиск, чтобы проверить, что вы получите, прежде чем приступить к поиску и замене, убедитесь, что вы изменили открытые файлы на случай, если потребуется отменить их, и сделайте резервную копию исходных файлов перед запуском, это работает достаточно хорошо. Даже с учетом перечисленных ловушек, это все еще экономит время.

1 Ответ

2 голосов
/ 25 февраля 2010

Попробуйте вместо этого:

Найти = MyFunc\({[^\)]*}\) Заменить = \1

Ваши косые черты неверны, а выражение в скобках ({+}) недопустимо.

Это не будет работать для параметров, которые содержат вызовы функций или другие использования круглых скобок - проблема соответствия сбалансированных скобок не может быть решена с помощью регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...