Итак, я пытался объединить ответы на эти два вопроса:
C # разбивает строку, но сохраняет разделенные символы \ разделители
регулярное выражение для сопоставления нескольких строк
По сути, я хотел бы иметь возможность разбивать строку вокруг определенных строк и иметь строки разделения в выходном массиве Regex.Split()
. Вот что я пробовал до сих пор:
// ** I'd also like to have UNION ALL but not sure how to add that
private const string CompoundSelectRegEx = @"(?<=[\b(UNION|INTERSECT|EXCEPT)\b])";
string sql = "SELECT TOP 5 * FROM Persons UNION SELECT TOP 5 * FROM Persons INTERSECT SELECT TOP 5 * FROM Persons EXCEPT SELECT TOP 5 * FROM Persons";
string[] strings = Regex.Split(sql, CompoundSelectRegEx);
Проблема в том, что он начинает сопоставлять отдельные символы, такие как E и U, поэтому я получаю неверный массив строк.
Я также хотел бы сопоставить вокруг UNION ALL, но поскольку это не просто слово, а строка, я не был уверен, как добавить его к приведенному выше регулярному выражению, так что если кто-то также может указать мне правильное направление, было бы здорово!
Спасибо!