我想找到(在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("%")){}
我试图了解如何在这里应用正则表达式。
答案 0 :(得分:7)
在此处移动我的评论:
您也可以使用非正则表达式:
if (s.Contains("%") && !s.Contains("%%"))
如果您需要使用正则表达式,可以将negative lookarounds与Regex.IsMatch
一起使用:
if(Regex.IsMatch(line, @"(?<!%)%(?!%)")) {}
请参阅此regex demo。
如果(?<!%)
前面有%
%
否定前瞻将导致匹配失败,(?!%)
否定后备将失败,%
跟随%
。
答案 1 :(得分:0)
我发帖作为答案,因为其他用户有时会忽略评论。
如果不需要正则表达式,那么一个简单的解决方案可能是:
if(line.Contains("%") && !line.Contains("%%"))
{
// string ok
}
正如其他人所指出的那样,你必须检查字符串中是否包含%
。