C#树数据结构,其中用于正则表达式生成

C#树数据结构,其中用于正则表达式生成,c#,tree,structure,expression,C#,Tree,Structure,Expression,我试图根据一些已知的文本生成正则表达式。我假设我可以将文本加载到树结构中,并查看生成的是什么类型的树,但我有一个问题似乎无法解决:我希望表姐妹连接在一起 例如: ZABCDEF ZBCCEFG 将导致: A-B- D-E-F Z- C- B-C- E-F-G A-B-D-E-F Z-C- B-C-E-F-G 我不想做任何排序,因为目标是按原样匹配文本。如果有任何提示,我们将不胜感激。这不就是所谓的跳过列表吗?从您编写的结果树中可以更容易地知道您想要生成什么类型的正则表达式

我试图根据一些已知的文本生成正则表达式。我假设我可以将文本加载到树结构中,并查看生成的是什么类型的树,但我有一个问题似乎无法解决:我希望表姐妹连接在一起

例如:

ZABCDEF
ZBCCEFG

将导致:

A-B- D-E-F Z- C- B-C- E-F-G A-B-D-E-F Z-C- B-C-E-F-G
我不想做任何排序,因为目标是按原样匹配文本。如果有任何提示,我们将不胜感激。

这不就是所谓的跳过列表吗?

从您编写的结果树中可以更容易地知道您想要生成什么类型的正则表达式,但我认为树比您需要的要多一些

假设希望相同的值作为正则表达式的锚,那么只需跟踪字符串中特定索引处的字符是否相同。这可以用一些数据类型来跟踪,但最容易解释的是布尔值数组(如果所有字符串的长度都不相同,那么您希望布尔数组的长度是第二大字符串的大小,而不是最大字符串的大小(没有任何内容会匹配其尾部字符)。默认情况下,它们初始化为false,然后可以循环给定字符串,当索引中的所有字符都相同时,将布尔值设置为true

然后,要使用所有字符串中相同的字符构建正则表达式,您可以检查布尔数组,看看是否可以将值直接放入表达式中,或者是否需要处理不同字符串之间的选择…请注意,此处理也可以内联完成,没有真正的ne编辑以跟踪数据并再次处理字符串

如果这是在正确的方向上,或者如果您可以提供更多信息以向我们发送正确的方向,我可以回来写一段快速的代码

编辑:只是一些代码来解释我说的话

string s1 = "ZABCDEF";
string s2 = "ZBCCEFG";
StringBuilder sb = new StringBuilder();

for (int i = 0; i < s1.Length; ++i)
{
    if (s1[i] == s2[i])
    {
        sb.Append(s1[i]);
        Console.WriteLine("  " + s1[i]);
    }
    else
    {
        sb.Append("[" + s1[i] + s2[i] + "]");
        Console.WriteLine(s1[i] + "   " + s2[i]);
    }
}

Console.WriteLine(sb);

字符串是否总是相同的长度?不,它们的范围是5-10个字符。需要比较的字符串大约有30K:)。我明白你在做什么,我想我可以用一点公式来重复使用它。希望它能有所帮助,我想在一天结束时,在这个过程中还有很多字符串需要运行,但对数据进行两次传递是违背我的天性的:)我要补充的唯一一点是要注意C#中正则表达式的速度。我能在网上找到的信息表明,索引处理速度更快。(我正在重写一个JSON解析器,因为它需要比目前快一点:)
  Z
A   B
B   C
  C
D   E
E   F
F   G
Z[AB][BC]C[DE][EF][FG]