【发布时间】:2018-03-31 11:32:50
【问题描述】:
我不熟悉正则表达式,所以希望有人可以帮助我。我正在使用正则表达式,如果该特定正则表达式匹配,我将进一步检查代码。
我使用并想要检查的正则表达式:
-
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。
还是我做错了?
【问题讨论】:
-
[Y[\s\S]|E[BILPRSY]|I[BELN]]看起来很奇怪:您似乎试图在字符类中使用交替构造,这是不可能的。能否进一步解释您要匹配的内容、检查输入的一些示例、结果以及出错时的预期?