如何使用正则表达式获取 demangled 函数名称

How to get demangled function name using regex

我有像 _Z6__comp7StudentS_ 这样的 demangled 函数名称列表 _Z4SortiSt6vectorI7StudentSaIS0_EE。我阅读了 wiki,发现它遵循某种已定​​义的结构。 _Z 是符号后跟一个数字,然后是该长度的函数名称。

所以我想使用正则表达式检索该函数名称。我只接近_Z(?:\d)(?<function_name>[a-z_A-Z]){}。但是引用 \1 是行不通的,因为它是字符串,对吗?是否有单一的正则表达式模式解决方案。

可以使用2个捕获组,使用捕获组2的位置获取字符串的一部分

import re

pattern = r"_Z(\d+)([a-z_A-Z]+)"
s = "_Z4SortiSt6vectorI7StudentSaIS0_EE"
m = re.search(pattern, s)

if m:
    print(m.group(2)[0: int(m.group(1))])

输出

Sort

使用 _Z6__comp7StudentS_ 将 return __comp