分享
三行代码  ›  专栏  ›  技术社区  ›  Saurav Kumar Singh

如何使用regex获取demangled函数名

  •  0
  • Saurav Kumar Singh  · 技术社区  · 1 周前

    我有一个需求函数名列表,比如 _Z6__comp7StudentS_ _Z4SortiSt6vectorI7StudentSaIS0_EE . 我读了wiki,发现它遵循某种特定的结构。_Z是一个损坏的符号,后跟一个数字,然后是该长度的函数名。

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

    1 回复  |  直到 1 周前
        1
  •  1
  •   The fourth bird    1 周前

    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_ 会回来的 __comp