C# 如何在正则表达式中搜索模式时忽略特定字符串?

C# 如何在正则表达式中搜索模式时忽略特定字符串?,c#,regex,regex-negation,C#,Regex,Regex Negation,我有一个查询,我用方括号中的关键字替换模式中指定的所有关键字 如果我的查询已经有从表1中选择[key],我应该忽略并避免替换它: var pattern = @"(?i)Key|IN|ON|VIEW"; var subject = "Select key from table1"; var result = Regex.Replace(subject, pattern, @"[$0]"); 如何实现这一点?您可以使用lookaheads忽略关键字周围的匹配[和]: var pattern =

我有一个查询,我用方括号中的关键字替换模式中指定的所有关键字

如果我的查询已经有
从表1中选择[key],我应该忽略并避免替换它:

var pattern = @"(?i)Key|IN|ON|VIEW";
var subject = "Select key from table1";
var result = Regex.Replace(subject, pattern, @"[$0]");

如何实现这一点?

您可以使用lookaheads忽略关键字周围的匹配
[
]

var pattern = @"(?i)(?<!\[)(?:Key|IN|ON|VIEW)(?!\])";

var pattern=@”(?i)(?感谢Anubhav.。它起作用了。但是你能告诉我它的作用吗?不客气。我提供的链接对RHS上的这个正则表达式进行了解释。另外,请看这篇关于正则表达式中的lookarounds的非常有用的文章: