Regexp извлекает аргументы функции - PullRequest
0 голосов
/ 08 ноября 2018

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

Пока я пришел с этим:

(?:([\w]+)((?:->|\.)))?([\w]+)(?:(\()((?:[\w]+|\"[^"]*?\"|))(?:\s*(,)\s*((?:[\w]+|\"[^"]*?\"|)))*(\)))

В этом примере:

test->log(IL_Info,"a", b, c)

То, что я могу достичь, это получить эти элементы

  • тест
  • "->"
  • журнал
  • "("
  • IL_Info
  • "," (последняя запятая)
  • с
  • ")"

Таким образом, я могу получить первый и последний аргумент (включая последнюю запятую), но не все между ними, и я не могу понять, что именно.

На самом деле я проверяю это на. regex101

Вот еще один список примеров, на которых я тестирую

append(apNewTask)
append(a, b)
pSenderTimer.property("trigger")
pSenderTimer->property("id")
scheduler.runTask(fpSchedulingTask)

и все они работают нормально, если не более двух параметров

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