Используя С#, у меня есть строка, которая представляет собой SQL script, содержащий несколько запросов. Я хочу удалить разделы строки, заключенные в одинарные кавычки. Я могу сделать это, используя Regex.Replace
следующим образом:
string test = "Only 'together' can we turn him to the 'dark side' of the Force";
test = Regex.Replace(test, "'[^']*'", string.Empty);
Результаты в: "Только мы можем превратить его в Силу"
Что я хочу сделать, это удалить подстроки между кавычками EXCEPT для подстрок, содержащих определенную подстроку. Например, используя приведенную выше строку, я хочу удалить цитированные подстроки, кроме тех, которые содержат "темные", так что результирующая строка:
Результаты: "Только мы можем превратить его в" темную сторону "Силы"
Как это можно сделать с помощью Regex.Replace
или, возможно, с помощью какой-либо другой техники? В настоящее время я пытаюсь использовать решение, использующее Substring()
, IndexOf()
и Contains()
.
Примечание. Мне все равно, удалены ли одиночные кавычки вокруг "темной стороны" или нет, поэтому результат также может быть: "Только мы можем превратить его в темную сторону Силы". Я говорю это, потому что решение с использованием Split()
удалит все одинарные кавычки.
Изменить: У меня еще нет решения, используя Substring()
, IndexOf()
и т.д. Под "работой" я имею в виду, что я думаю в голове, как это может быть сделанный. У меня нет кода, поэтому я еще не опубликовал его. Спасибо.
Изменить: Решение VKS ниже работает. Я не избежал первой попытки, поэтому она не удалась. Кроме того, это не сработало, если я не включил одиночные кавычки вокруг всей строки.
test = Regex.Replace(test, "'(?![^']*\\bdark\\b)[^']*'", string.Empty);