使用C#,我有一个包含多个查询的SQL脚本字符串。我想删除字符串中用单引号括起来的部分。我可以通过以下方式使用Regex.Replace
来实现:
string test = "Only 'together' can we turn him to the 'dark side' of the Force";
test = Regex.Replace(test, "'[^']*'", string.Empty);
结果为: "只有我们才能将他引向原力之 '黑暗面' "
我想要做的是删除引号中的子字符串,除了包含特定子字符串的子字符串。例如,使用上面的字符串,我想要删除带引号的子字符串,除了那些包含"dark"的子字符串,得到的结果字符串应该是:
结果为: "只有我们才能将他引向原力之 '黑暗面' "
如何使用Regex.Replace
或其他技术实现呢?我目前正在尝试一种解决方案,它涉及到使用Substring()
、IndexOf()
和Contains()
。
注意:我不在乎围绕“dark side”的单引号是否被删除,因此结果也可以是:“只有我们才能将他引向原力之黑暗面。”我这么说是因为使用Split()
的解决方案会删除所有单引号。
编辑: 我还没有使用Substring()
、IndexOf()
等找到解决方案。通过“工作”,我指的是正在脑海中考虑如何完成。我没有任何代码,这就是为什么我还没有发布任何代码。谢谢。
编辑: VKS的解决方案有效。第一次尝试时我没有转义\b,所以它失败了。此外,除非也包括整个字符串周围的单引号,否则它不起作用。
test = Regex.Replace(test, "'(?![^']*\\bdark\\b)[^']*'", string.Empty);