Я пишу регулярное выражение для извлечения каждого элемента строки вызова базовой функции 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)
и все они работают нормально, если не более двух параметров