【问题标题】:How to get demangled function name using regex如何使用正则表达式获取解组函数名称
【发布时间】:2021-02-22 08:10:30
【问题描述】:

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

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

【问题讨论】:

  • 您展示的示例的结果究竟应该是什么?
  • @mkrieger1 "__comp" 用于第一个,"Sort" 用于第二个

标签: python-3.x regex regex-lookarounds


【解决方案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_ 将返回__comp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 2015-07-08
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多