![](/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.