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

wangmeng159 2013-04-30 05:04:52
有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;"

...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2013-04-30
  • 打赏
  • 举报
回复
Regex reg=new Regex("(?is)struct.*?{.*?}\\w+;");
string[] result=reg.Matches(yourstr).Cast<Match>().Select(m=>m.Value).ToArray();
gomoku 2013-04-30
  • 打赏
  • 举报
回复
试试?
string p = @"struct\s*{(?>[^{}]+|{(?<Depth>)|}(?<-Depth>))*}[^;\""{}]*;(?(Depth)(?!))";

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧