【发布时间】:2010-06-26 02:48:39
【问题描述】:
- 我应该使用正则表达式来执行此操作吗?
- 可以将结果构造为可查询、可 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 并且速度很慢。如果我去掉 $ 符号,它也只会返回所有子节点。这是阻止我使用正则表达式执行此操作的唯一原因。
我猜另一种选择就是逐行解析。我确信我可以在给定的时间内解决这个问题,但我想在我采取一种或另一种方式之前听听其他意见。
有什么想法吗?
【问题讨论】:
-
您要从中提取的数据在哪里?每个分组中是否有 Table、Text、Number、Item、1、2、3 常量值?