查找字符串C#中是否单独存在

时间:2016-09-27 11:41:36

标签: c# regex string contain

我想找到(在VS C#中)字符串包含一个没有立即重复的字符(例如'%')。

例如“我只有%,这很好=> %%”。我想找到任何包含单个'%'(甚至几次)的字符串,无论相邻的“%%”出现次数。

以下内容显然不起作用,并会为true提供foo2

string foo1="% I want to find this string";
string foo2="I don't want to find this string because the char %% is not alone";
string foo3="I%want%to%find%this%as%well!"
if(line.Contains("%")){}

我试图了解如何在这里应用正则表达式。

2 个答案:

答案 0 :(得分:7)

在此处移动我的评论

您也可以使用非正则表达式:

if (s.Contains("%") && !s.Contains("%%"))

如果您需要使用正则表达式,可以将negative lookaroundsRegex.IsMatch一起使用:

if(Regex.IsMatch(line, @"(?<!%)%(?!%)")) {}

请参阅此regex demo

如果(?<!%)前面有% %否定前瞻将导致匹配失败,(?!%)否定后备将失败,%跟随%

答案 1 :(得分:0)

我发帖作为答案,因为其他用户有时会忽略评论。

如果不需要正则表达式,那么一个简单的解决方案可能是:

if(line.Contains("%") && !line.Contains("%%"))
{ 
  // string ok 
}

正如其他人所指出的那样,你必须检查字符串中是否包含%