如何使用正则表达式获取 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
我有像 _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