读书人

C# 正则表达式 匹配 ,多谢各位

发布时间: 2013-07-08 14:13:00 作者: rapoo

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();

读书人网 >C#

热点推荐