Не эксперт по регулярным выражениям. Но после небольшого поиска в Интернете я придумал это выражение, чтобы поменять местами два текста в моем файле:
%s/(\s*\(&\)\(.*\), \(.*\)\s*);/( \3, \2 );/gc
Мой исходный текст:
read( ®Val.mAllBits, getAddr()+offset );
И я хочу заменить его на:
read( getAddr()+offset, regVal.mAllBits );
Как вы видите выше, требования:
- игнорировать необязательные пробелы, которые встречаются между каждым текстом
- Удалите символ & перед первым текстом.
У меня есть \ s * в начале и в конце, чтобы игнорировать пробелы. Но проблема в том, что пробел перед закрывающей скобкой в операторе добавляется для соответствия 3. Таким образом, я получаю результат как:
read( getAddr()+offset , regVal.mAllBits );
Обратите внимание на лишний пробел перед ', '. Я так много пробовал, но не смог решить. Может ли кто-нибудь помочь мне игнорировать пробелы в сопоставлении с шаблоном в моем операторе регулярного выражения?