繁体   English   中英

REGEX在测试器中匹配,但在C#中不匹配

[英]REGEX matches in tester but not C#

我从文件中的行: ; STRING WBSALT1() ; STRING WBSALT1()

和代码

if (!Regex.IsMatch(line, @"\s*(;)(.*)", RegexOptions.IgnoreCase))
   {
       //do
       //stuff
   }

由于某种原因,REGEX与文件中的该行不匹配。 我通过测试器运行它,发现它很好。 有谁知道还有什么可能导致该问题?

但是它将与之匹配(在代码中,而不在正则表达式测试器中)

if (Regex.IsMatch(line, @"\s*(string)\s*(.*\()\s*(\d*)\)\s*;?(.*)", RegexOptions.IgnoreCase))

这对我来说真的没有任何意义。 文件中的其他几千行看起来没有类似的其他问题。 有任何想法吗?


编辑 :好的,所以我没有将它放在问题中,因为我认为没有必要。 显然是:

我的ACTUAL if语句如下:

if (!Regex.IsMatch(line, @"\s*;.*") || !Regex.IsMatch(line, @"\s*(origin)\s*(.*)", RegexOptions.IgnoreCase))

现在,当我起飞|| 声明它正常工作。 我为什么不知道这样做的原因。 也许有人对此有所了解?

在我的环境中经过测试,可以正常工作。

        string line = "; STRING WBSALT1()";

        if (!Regex.IsMatch(line, @"\s*(;)(.*)", RegexOptions.IgnoreCase))
           {
               //do
               //stuff
           }

想知道您是否不打算使用“!” 成为条件的一部分

 if(! ...

问候,

仅添加即可,如果您使用.* ,则无需在此处设置IgnoreCase并且可能会丢失捕获组。 您可能还想添加开始^和结束$行锚。

Ideone测试

string line = "; STRING WBSALT1()";
if (!Regex.IsMatch(line, @"^\s*;.*$")) {
   // do something
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM