我不熟悉正则表达式,所以我希望有人可以帮助我。我正在使用正则表达式,如果特定的正则表达式匹配与否,我将在代码中进一步检查。
正则表达式我使用并想要检查:
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'的替代品(两者都是字符串制作者)。我还用Console.WriteLine()
检查了它的值是什么子串(Wich返回“arç”)。
那么,现在的问题是,为什么代码将其视为true
而不是False
?我认为它必须是False
。
或者我完全错了吗?
需要更多信息,请问我会添加它。
答案 0 :(得分:3)
您必须将其写为
var InitialGForKj = new Regex("Y.|E[BILPRSY]|I[BELN]", RegexOptions.Compiled | RegexOptions.Singleline);
请参阅regex demo。请注意,.
匹配任何包含换行符的char,因为RegexOptions.Singleline
选项已传递给 Regex 构造函数。
当前[Y[\s\S]|E[BILPRSY]|I[BELN]]
模式匹配3个替代方案:
[Y[\s\S]
- Y
,[
,空白或非空白(这匹配任何字符!)|
- 或E[BILPRSY]
- E
,然后来自班级的一封信|
- 或I[BELN]]
- I
后跟B
,E
,L
,N
,然后是]
。< / LI>
如您所见,您通过使用[
和]
封闭整个模式来破坏它。
答案 1 :(得分:0)