Проанализировать имя функции, используя регулярное выражениеPython

Программы на Python
Ответить
Anonymous
 Проанализировать имя функции, используя регулярное выражение

Сообщение Anonymous »

Я пытаюсь проанализировать функцию, используя многострочный код из файлов .cc/.cpp/.c. Я получаю почти все функции, кроме следующей
  • Необязательные дополнительные слова после аргументов
  • Необязательное имя класса с
    параметрами шаблона или :: или . (с необязательными пробелами/новой строкой после
    )
Ниже приведено содержимое файла xyz.c

Код: Выделить всё

//optional additional words after argument (i.e. "onexcept")
dummy_returnType1 class1.dot_func1(uint32 id) onexcept
{
//function contents
}

//optional additional words after argument (i.e. "onexcept")
dummy_returnType1 class1::colon_func1(uint32 id) onexcept
{
//function contents
}

//class name with template
returnType2 class2::template_func2(uint32 id) onexcept
{
//function contents
}

//space after class name (i.e. class3::)
returnType3 class3:: space_func3(uint32 id) onexcept
{
//function contents
}

//new line after class name
returnType4 class4::
newline_func4(uint32 id)
{
//function contents
}
вот код:

Код: Выделить всё

function_pattern = re.compile(r'(?P\w[\w\s\*&]+)\s+'
r'(?P\w+(?:\[.:\w\s*&:,]\w+)?::)?'
r'(?P\w+)\s*'
r'\((?P[^)]*)\)\s*'
r'(?P[\w\s]*)?'
r'\s*\{',
re.DOTALL | re.MULTILINE
)

for match in function_pattern.finditer(file_content):
function_name = match.group('function_name')
class_name = match.group('class_name')
Пожалуйста, помогите мне понять, чего мне не хватает.
ожидаемый результат:
функция = func1, класс = класс1
функция = func2, класс = класс2
функция = func3, класс = class3
function = func4, class = class4

Подробнее здесь: https://stackoverflow.com/questions/791 ... sing-regex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»