Regex 多行的正则表达式语法

Regex 多行的正则表达式语法,regex,Regex,这是我试图解析的文件的一个片段 typedef union { struct { unsigned RC1REG :8; }; } RC1REGbits_t; extern volatile RC1REGbits_t RC1REGbits __at(0x119); // bitfield macros #define _RC1REG_RC1REG_POSN 0x0 #d

这是我试图解析的文件的一个片段

typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RC1REGbits_t;
extern volatile RC1REGbits_t RC1REGbits __at(0x119);
// bitfield macros
#define _RC1REG_RC1REG_POSN                                 0x0
#define _RC1REG_RC1REG_POSITION                             0x0
#define _RC1REG_RC1REG_SIZE                                 0x8
#define _RC1REG_RC1REG_LENGTH                               0x8
#define _RC1REG_RC1REG_MASK                                 0xFF
// alias bitfield definitions
typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RCREGbits_t;

extern volatile RCREGbits_t RCREGbits __at(0x119);
// bitfield macros
#define _RCREG_RC1REG_POSN                                  0x0
#define _RCREG_RC1REG_POSITION                              0x0
#define _RCREG_RC1REG_SIZE                                  0x8
#define _RCREG_RC1REG_LENGTH                                0x8
#define _RCREG_RC1REG_MASK                                  0xFF
typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RCREG1bits_t;
我正在尝试提取此文件中的typedef声明,但仅提取typedef

我以为我用的是typedef\s+union\s+\{\n.++bits\u t;不幸的是,它不太正确。在上面提供的示例中,所有文本都将突出显示,这是不需要的。但是,如果在extern之前有一个换行符,它会工作。但我不能保证总是有一个换行符

所需的输出类似于

typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RC1REGbits_t;

typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RCREGbits_t;    

typedef union {
    struct {
        unsigned RC1REG                 :8;
    };
} RCREG1bits_t;
如何将我的搜索绑定到typedef union…bits_t


如果在python语法中使用re软件包,则会有额外的好处,因为这是我写这篇文章时使用的语言。

您可以懒洋洋地重复任何字符,直到遇到位为止:

对于Python语法,类似于

re.findall(r'typedef\s+union\s+{[\s\S]*?bits_t;', input)