簡體   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