gpt4 book ai didi

c# - 在 C# 中解析自定义文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:17 25 4
gpt4 key购买 nike

  1. 我应该使用正则表达式来执行此操作吗?
  2. 可以将结果结构化为可查询、IEnumerable 等。

我有一个文件,我无法更改它的生成方式。我希望创建一个解析器类来提取所有数据。理想情况下,我想使用此类打开文件并让它返回一个我可以使用的可查询数组类型结构。

数据结构如下:

["Table"] = {
["Text"] = {
["Number"] = {
"Item", --[1]
"Item", --[2]
"Item", --[3]
},
--repeat--
Note that the actual file has line brakes, tab, etc. (\n\t\t)
As you will see the patters I use take this into account
to get different levels.

我有一个为 vb6 为这个文件编写的正则表达式,但是 7 种模式中的 1 种不起作用:

@"^\t\[""([\s\S]*?)""] = {([\s\S]*?)^\t},$

这应该将最顶层 ["Table"] 分组到他们自己的匹配项中。但它返回 0 并且速度很慢。如果我去掉 $ 符号,它也会返回所有子节点。这是唯一阻止我使用正则表达式来执行此操作的因素。

我猜另一种选择就是逐行解析。我确信我可以在给定的时间内解决这个问题,但我想在采取任何一种方式之前听取其他意见。

有什么想法吗?

最佳答案

我会远离正则表达式,如果你想对这样的文件进行任何真实世界的解析,你将很快遇到大量无法调试的正则表达式问题,例如处理正确的嵌套(假设你的文件可以有多个嵌套级别)和正确性会让你非常头疼。有许多模式可以导致任何正则表达式处理器几乎看起来像一个无限循环并且永远不会结束(或者至少不会在任何合理的时间内结束),真正编写这样一个简单的解析器应该很快并且导致更好的调试,性能和可维护性等

关于c# - 在 C# 中解析自定义文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com