![](/img/trans.png)
[英]C# regex match, match.Success returns false even after following the rules
[英]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)。dmetaphoneKeyResultPrimary
和dmetaphoneKeyResultSecondary
是字母 '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
跟着B
, E
, L
, N
,然后是]
。 如您所見,您通過用[
和]
包圍整個模式來破壞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.