Я работаю над проблемой, когда у меня есть два входа
Вход 1: Правила в иерархическом формате (дерево) (этот набор может быть огромным)
Пример:
X
|-A-{}
|-B-C-*
|-D-E-F-{}
|-G-[]
|-H-I-J-K-<>
|-L-M-N-O-P-Q-{}
Где X, A, B, D, E, F, G ... являются ключевыми словами и {}, *, [], <> являются заполнителями.
Ввод 2: Набор строк
Пример:
X-A-1
D-E-F-1
X-A-2
D-E-F-2
L-M-N-O-P-Q-3
L-M-N-O-P-Q-1
Мне нужнодля сопоставления с образцом каждой из этих строк на основе набора правил, указанного во входе 1, и проверки соответствия. Если это совпадает, мне нужно сгруппировать эти строки на основе значений заполнителя. Например, {} является общим заполнителем для 3 правил на входе 1 (A- {}, DEF- {}, LMNOPQ- {}).
Выход: Группы выходных результатов должны быть такими:
Значение заполнителя 1:
XA-1 DEF-1LMNOPQ-1
Значение заполнителя 2:
XA-2 DEF-2
Значение заполнителя 3:
LMNOPQ-3
Я имею в виду представление Входа 1 в виде дерева и прохождение каждой строки во Входе 2, а затем для каждого из этих значений заполнителей сформировать группу и добавить строки вэти группы. Мне нужно реализовать это на Java. Я думал о том, чтобы сделать простое сопоставление с Regex, но входной набор мог бы быть огромным. Я хочу знать ваши предложения / комментарии относительно моего подхода. Кроме того, какую библиотеку Java с открытым исходным кодом я могу использовать для представления Входных данных 1. Служит ли Graph Stream для этой цели?