Было бы проще узнать, какой тип регулярного выражения вы хотели бы сделать из этого результирующего дерева, которое вы написали, но я думаю, что дерево немного больше, чем вам нужно для этого.
Предполагая, что вы хотите, чтобы одинаковые значения были якорями регулярного выражения, тогда все, что вам нужно сделать, - это отслеживать, совпадают ли символы в определенном индексе в строках. Это можно отследить с помощью нескольких типов данных, но самый простой для объяснения - это просто массив логических значений (если все строки имеют разную длину, вы бы хотели, чтобы длина логического массива равнялась размеру второго по величине). строка, а не самая большая (ничто никогда не будет соответствовать последним символам). По умолчанию они инициализируются как false, затем вы можете циклически проходить по заданным строкам, а когда все символы в индексе совпадают, установить логическое значение в true.
Затем, чтобы построить свое регулярное выражение, используя одинаковые символы во всех строках, вы можете проверить логический массив, чтобы увидеть, можете ли вы поместить значение непосредственно в выражение или вам нужно обработать выбор между различными строками ... Обратите внимание, что эта обработка также может быть выполнена встроенной, нет необходимости отслеживать данные и обрабатывать строки во второй раз.
Если это в правильном направлении, или если вы можете предоставить больше информации, чтобы отправить нас в правильном направлении, я мог бы вернуться и написать небольшой фрагмент кода.
редактировать: просто немного кода, чтобы объяснить, что я говорил
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);
Выводит вам диаграмму по вертикали, а также полученное выражение, которое будет соответствовать любой строке.
Z
A B
B C
C
D E
E F
F G
Z[AB][BC]C[DE][EF][FG]