C# 正则表达式 匹配 ,谢谢各位
有C语言写的类文件,就是.h 文件
需要匹配 结构体
如下:
#ifndef _H_ANALYZER_TASK_FILE_
#define _H_ANALYZER_TASK_FILE_
#define ANALYZER_BUFFER_COUNT (360)
#define ANALYZER_DELAY_COUNT (5)
typedef struct
{
u8 CallMark; //因MainTask会监测每一个任务的运行状态,所以定义此变量,做为各任务统一点名标记.
u16 BufferPos; //当前Buffer缓冲区存储索引,当大于
FUEL_POINT Buffer[ANALYZER_BUFFER_COUNT];
//最近3小时的所有油位点,以每30秒一个点计算.
FUEL_POINT DelayOutput[ANALYZER_DELAY_COUNT]; //因需要延时两分钟,所以这些值均被置入到DelayBuffer中.
u16 FuelDifferent[ANALYZER_BUFFER_COUNT - 1]; //用于分析油位趋势的油位值差缓冲区.
FUEL_POINT Start; //加减油事件起点.
FUEL_POINT End; //加减油事件终点.
}ANALYZER_TASK;
extern OS_STK AnalyzerTaskStk[ANALYZER_STK_SIZE];
extern void AnalyzerInitial(void);
extern void AnalyzerTask(void * pdata);
有多个结构体
需要匹配 struct { ....} ANALYZER_TASK; 结构体名字可变的,且有大写,小写,下划线
struct是不可变的。
学过C或者C++ 的明白结构的体的语法。
最终的到字符串是 string[] strs=............
str=strs[0]; "struct { ....} ANALYZER_TASK;"
str=strs[1]; "struct { ....} FUEL_TRACK;"
正则表达式
C#
Buffer
struct
------解决方案--------------------试试?
string p = @"struct\s*{(?>[^{}]+
------解决方案--------------------
{(?<Depth>)
------解决方案--------------------
}(?<-Depth>))*}[^;\""{}]*;(?(Depth)(?!))";
------解决方案--------------------Regex reg=new Regex("(?is)struct.*?{.*?}\\w+;");
string[] result=reg.Matches(yourstr).Cast<Match>().Select(m=>m.Value).ToArray();