gpt4 book ai didi

C# 高级标签解析

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

我们正在开发一个应用程序,我们需要能够从标签生成文本字符串,例如可以用于生成 csv 文件、sql 语句等...,这些标签代表软件中的数据源。

这旨在为最终用户提供最大的灵 active ,让他们了解如何从软件中提取数据,它与文件编写器、数据库连接器、MS Word 文档解析器等模块相结合......

基本思想是采用这样的标记格式 {SourceObject.Item("formatting")}

然后可以将哪个标记用作 INSERT INTO mydb (myfield) VALUES ("{SourceObject.Item("formatting")}");

棘手的地方是我们可能有一个源对象数组的数据,这意味着标签可能开始变得相当复杂:

{SourceObject(12).Item("格式化")}

{SourceObject("ITEM17").Item("格式化")}

以生成具有特定名称的文本文件为例:

myfile {System.Date("DD_MM_YY HH:NN")}.txt 会产生 myfile 08_08_19 12:22.txt

我们可以从头开始写一个解析器,但我相信这种类型的解析相对常见,也许类似的方法或现有的解析器可以完成这项工作?

最佳答案

你可以在没有额外库的情况下实现你的目标,所有的例子都可以用一个简单的正则表达式来处理:{([\w]+)(?:\("([^"]+)"\)|\(([^\)]+)\))*\.([\w]+)\("([^"]+)"\)}

此 RegEx 涵盖您发布的所有案例:

  • {SourceObject(12).Item("formatting")} 产生以下内容:
    • 第 1 组:SourceObject
    • 第 3 组:12
    • 第 4 组:项目
    • 第 5 组:格式化
  • {SourceObject("ITEM17").Item("formatting")} 产生以下内容:
    • 第 1 组:SourceObject
    • 第 2 组:ITEM17
    • 第 4 组:项目
    • 第 5 组:格式化
  • myfile {System.Date("DD_MM_YY HH:NN")}.txt 生成以下内容:
    • 第 1 组:系统
    • 第 4 组:日期
    • 第 5 组:DD_MM_YY HH:NN
  • 等等..

在 C# 中,它就像下面的代码一样简单:

private static Regex tagParsing = new Regex(
@"{([\w]+)(?:\(""([^""]+)""\)|\(([^\)]+)\))*\.([\w]+)\(""([^""]+)""\)}",
RegexOptions.Compiled);

public static void TestMethod()
{
Match m = tagParsing.Match(@"myfile {System.Date(""DD_MM_YY HH:NN"")}.txt");
}

您只需要记住 RegexOptions.Compiled 选项并重用已编译 Regex 的相同实例,否则您将遇到性能问题。

关于C# 高级标签解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57411471/

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