Как с помощью регулярных выражений найти все строки исходного кода, определяющие аргументы функции по умолчанию? - PullRequest
0 голосов
/ 01 августа 2020

Я хочу найти строки кода, которые объявляют функции с аргументами по умолчанию, например:

int sum(int a, int b=10, int c=20);

Я думал, что буду искать:

  1. The первая часть совпадающего шаблона - это ровно одна левая скобка «(»
  2. Вторая часть строки - это один или несколько любых символов, за исключением «=»
  3. ровно один равен -sign "="
  4. знак отличия
  5. один или несколько символов, кроме правой круглой скобки «)»
  6. «)»

Вот моя попытка:

([^=]+=[^=][^)]+)

Я бы хотел избежать совпадения условных предложений для операторов if и while.

For Например,

int x = 5;
if (x = 10) {
    x = 7;
}

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

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Пожалуйста, отметьте это:

\(((?:\w+\s+[\w][\w\s=]*,*\s*){1,})\)

Вышеприведенное выражение соответствует списку параметров и возвращает его как $ 1 (Группа 1), если это необходимо для дальнейшей обработки.

демо здесь

0 голосов
/ 01 августа 2020

Попробуйте это:

\([^)]*\w+\s+\w+\s*=[^),][^)]*\)

См. живую демонстрацию .

Он ищет символы слов (тип параметра), пробел (s), символы слов ( имя параметра), необязательные пробелы, затем знак равенства.

Добавьте ".*" к каждому концу, чтобы соответствовать всей строке.

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