我想在文件中读出下面提到的变量。
#define xyz_u8 abc_0x0_u8 = 0x0 (for hex)
#define xyz_f16 abc_MOD1_f32 = -0.1f (for int and float)
#define xyz abc_YY = YY_ZZ (for others)
我正在使用
re.compile(r"^#define\s+(\w+)\s+(\w+)(0[xX][0-9a-fA-F]+)")
用于读取十六进制,但我无法从' ='获得价值。任何人都可以纠正正则表达式。
答案 0 :(得分:1)
我建议
^#define\s+(\w+)\s+(\w+) = (.+)
将其与re.I
和re.M
一起使用(如果您有多行输入)。
请参阅regex demo
模式说明:
^
- 字符串的开头(或使用re.M
时的行)#define
- 一系列文字字符\s+
- 一个或多个空格(\w+)
- 第1组捕获一个或多个字([a-zA-Z0-9_]
)字符\s+
- 一个或多个空格(\w+)
- 第2组捕获一个或多个字([a-zA-Z0-9_]
)字符 =
- 空格,=
,空格(您可以在每个空格后添加+
以允许1个或多个空格,或*
允许0个或更多个空格) (.+)
- 第3组将捕获其余部分。