Регулярное выражение для замены Q_FOREACH на C ++ для цикла - PullRequest
0 голосов
/ 05 октября 2018

До появления C ++ 11 и благодаря инфраструктуре Qt я всегда использовал цикл Q_FOREACH(element, container) в своем коде.

Теперь я хотел бы заменить его на C ++11 для цикла в форме: for(element : container)

Я работаю в Visual Studio 2017 и хочу использовать утилиту Find & Replace с помощью регулярных выражений:

enter image description here

Какое регулярное выражение я должен написать в поле ввода «Найти что:» и что является относительным «Заменить на:» строку?

Как первая попытка I 'мы пытались установить в поле "найти что":

Q_FOREACH(\w, \w)

, но совпадений не найдено.Что я делаю не так?

Вот несколько тестов:

Q_FOREACH(Class instance, this->classes())    -->  for (Class instance : this->classes())
Q_FOREACH(int v, vector)    -->  for (int v : vector)
Q_FOREACH   (int v  , vector)    -->  for (int v : vector)

Итак, правила таковы:

  • заменить Q_FOREACH клавишную работу на for
  • любое слово от ( до , должно быть сохранено
  • заменить , на :
  • любое слово от , до ) имеетбыть сохраненным

1 Ответ

0 голосов
/ 05 октября 2018

Группы захвата должны работать в большинстве основных двигателей:

\bQ_FOREACH\s*\((.*?),

Заменить на:

for ($1 :

https://regex101.com/r/v56HBk/1

...