1

我需要一些帮助来构建与以下字符串格式匹配的正则表达式:

typedef enum x
{
    ...
} z;

我想在哪里获得 x 和 z 的值,即使它们没有被指定。

谢谢!

4

1 回答 1

2
import re
str_typedef = """typedef enum x
{
    ...
} z;"""
pattern = 'typedef\s+enum\s+([a-zA-Z0-9_]+)\s*{[^{}]*}\s*([a-zA-Z0-9_]+)\s*;'
rs = re.findall(pattern, str_typedef)
for r in rs:
    enum_type_name = r.group(1)
    enum_name = r.group(2)
    # do operations with results here, or store to an array 
    # of dictionaries for use later.

在这里,enum_type_name最终将是“x”或替代 x 的任何其他名称,enum_name最终将是“z”或替代 z 的任何其他名称。

表达式的快速摘要:

每个\s+都是一个或多个空格或换行符,每个\s*都是相同的,但使空格可选。

每个都([a-zA-Z0-9_]+)将捕获并存储一组一个或多个字母数字字符,用于 c++ 变量/类/枚举名称。

{[^{}]*}表示 a{后跟任意数量的不是{or的字符,}然后是 a }

于 2013-11-12T03:40:40.117 回答