簡體   English   中英

C# 檢查正則表達式是否匹配,返回 True 而不是 False

[英]C# Check if Regex is a match, returns True instead of False

我不熟悉 Regex 所以,我希望有人能幫助我。 我正在使用正則表達式,我正在進一步檢查代碼中的特定正則表達式是否匹配。

我使用並想檢查的正則表達式:

  • Regex InitialGForKj = new Regex("[Y[\\s\\S]|E[BILPRSY]|I[BELN]]", RegexOptions.Compiled); .

現在我檢查它是否匹配的代碼如下:

else if (i == 0 && InitialGForKj.IsMatch(upperLetters.Substring(1, 3)))
        {
            dmetaphoneKeyResultPrimary.Append("K");
            dmetaphoneKeyResultSecondary.Append("J");
            i += 2;
        }
  • i是當前字符(在這種情況下它是'G')。
  • upperLetters = 要檢查的字(在本例中:Garçon)。
  • dmetaphoneKeyResultPrimarydmetaphoneKeyResultSecondary是字母 'G' 的替代品(兩者都是 Stringbuilders)。

我還檢查了Console.WriteLine()其值的子字符串是什么(返回“arç”)。 那么,現在的問題是,為什么代碼將其視為true而不是False 我認為它必須是False

還是我完全錯了?

你必須把它寫成

var InitialGForKj = new Regex("Y.|E[BILPRSY]|I[BELN]", RegexOptions.Compiled | RegexOptions.Singleline);

請參閱正則表達式演示 請注意. 匹配任何字符,包括換行符,因為RegexOptions.Singleline選項被傳遞給Regex構造函數。

當前[Y[\\s\\S]|E[BILPRSY]|I[BELN]]模式匹配 3 個選項:

  • [Y[\\s\\S] - 一個Y[ ,空格或非空格(這匹配任何字符!)
  • | - 或
  • E[BILPRSY] - E然后是班上的一封信
  • | - 或
  • I[BELN]] - a I跟着BELN ,然后是]

如您所見,您通過用[]包圍整個模式來破壞它。

首先,這是您當前的表達方式:

在此處輸入圖片說明

如您所見,外部 [ ] 將被識別為字符。 所以放下他們!

因為 \\s\\S 被識別為空白或非空白,所以幾乎和所有東西一樣,Garcon 是一個有效的匹配項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM