Я пытаюсь разделить путь Cypher, который выглядит следующим образом:
(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })-[:_USE_]->(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })-[:_HAVE_]->(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })-[:_ENTITLE_TO_]->(`RS 3000`: MONEY { name: 'RS 3000' })
Что после разбиения должно дать мне, где элементы в четных индексах являются узлами в скобках, а элементы в нечетных индексах - это отношения, объединяющие их в квадратных скобках:
(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })
[:_USE_]
(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })
[:_HAVE_]
(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })
[:_ENTITLE_TO_]
(`RS 3000`: MONEY { name: 'RS 3000' })
Моя попытка 1:
public static void Main()
{
string input = @"(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })-[:_USE_]->(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })-[:_HAVE_]->(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })-[:_ENTITLE_TO]->(`RS 3000`: MONEY { name: 'RS 3000' })";
string pattern = @"(\(.+\))-(\[.+\])->(\(.+\))";
string [] split = input.Split(new[] { "-", "->" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string item in split)
Console.WriteLine(item);
}
Что выводит меня (обратите внимание на >
в начале некоторых записей):
(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })
[:_USE_]
>(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })
[:_HAVE_]
>(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })
[:_ENTITLE_TO]
>(`RS 3000`: MONEY { name: 'RS 3000' })
Моя попытка 2:
public static void Main()
{
string input = @"(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })-[:_USE_]->(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })-[:_HAVE_]->(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })-[:_ENTITLE_TO]->(`RS 3000`: MONEY { name: 'RS 3000' })";
string pattern = @"(\(.+\))-(\[.+\])->(\(.+\))";
string[] regSplit = Regex.Split(input, pattern);
foreach (string item in regSplit)
Console.WriteLine(item);
}
Что выводит меня:
(`GROUP1`: TRAVEL_PLAN { name: 'GROUP1' })-[:_USE_]->(`LODGING`: TRAVEL_ENTITLEMENT { name: 'LODGING' })-[:_HAVE_]->(`LODGING_R_1`: RULE { name: 'LODGING_R_1' })
[:_ENTITLE_TO]
(`RS 3000`: MONEY { name: 'RS 3000' })
(Это мой текущий Regex
)
Я долго чесаю голову за это, буду признателен, если кто-нибудь сможет помочь.