使用RegEx在文件中查找变量

时间:2016-07-11 07:19:17

标签: python regex

我想在文件中读出下面提到的变量。

#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]+)")

用于读取十六进制,但我无法从' ='获得价值。任何人都可以纠正正则表达式。

1 个答案:

答案 0 :(得分:1)

我建议

^#define\s+(\w+)\s+(\w+) = (.+)

将其与re.Ire.M一起使用(如果您有多行输入)。

请参阅regex demo

模式说明

  • ^ - 字符串的开头(或使用re.M时的行)
  • #define - 一系列文字字符
  • \s+ - 一个或多个空格
  • (\w+) - 第1组捕获一个或多个字([a-zA-Z0-9_])字符
  • \s+ - 一个或多个空格
  • (\w+) - 第2组捕获一个或多个字([a-zA-Z0-9_])字符
  • = - 空格,=,空格(您可以在每个空格后添加+以允许1个或多个空格,或*允许0个或更多个空格)
  • (.+) - 第3组将捕获其余部分。