gpt4 book ai didi

C# 检查 Regex 是否匹配,返回 True 而不是 False

转载 作者:行者123 更新时间:2023-11-30 15:56:26 25 4
gpt4 key购买 nike

我不熟悉正则表达式,所以我希望有人能帮助我解决这个问题。我正在使用 Regex,我正在代码中进一步检查该特定 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);

参见 regex demo .请注意,. 匹配任何字符,包括换行符,因为 RegexOptions.Singleline 选项已传递给 Regex 构造函数。

当前 [Y[\s\S]|E[BILPRSY]|I[BELN]] 模式匹配 3 个备选方案:

  • [Y[\s\S] - Y[、空格或非空格(匹配任何字符!)
  • | - 或者
  • E[BILPRSY] - E 然后是类(class)的一封信
  • | - 或者
  • I[BELN]] - I 后跟 BELN,然后是 ]

如您所见,您通过用 [] 包围整个模式来破坏它。

关于C# 检查 Regex 是否匹配,返回 True 而不是 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46829718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com