在C中解析指令文件的简单方法?

时间:2015-06-23 07:42:09

标签: c parsing

是否有一种简单的方法来解析指令的文件(因为我想不出更好的词)?

我需要扫描<!--#directive parameter=value -->的文件,复制该值,找到该指令在文件中的位置和长度,以便可以用任何内容替换。

我来自微控制器,并且没有很多额外/完整库的经验。

有没有更好的方法来实现这一点,而不是逐行手动扫描? (我猜ftell用于位置,fgets,然后使用sscanf进行解析,如果是匹配则fseek回到最后位置。)

1 个答案:

答案 0 :(得分:0)

这是一个可以帮助的正则表达式:

<!--\s*#.+=(\S+)\s?-->

每场比赛中索引为1的组是您的值。 您可以在此处测试它们:https://regex101.com/

还要考虑使用高级语言。这是C#中的一个片段,它打印文本文件中的所有值:

var inputText = File.ReadAllText("D:\\myTextFile.txt");
var regex = new Regex("<!--\\s*#.+=(\\S+)\\s?-->");
var matches = regex.Matches(inputText);
foreach (var g in matches.Cast<Match>().Select(match => match.Groups[1]))
    Console.WriteLine(g.ToString());