我试图了解如何匹配数组中保存的特定字符串(此字符串将始终为 3 个字符长,例如:123、568、458 等),我会将该字符串与更长的字符串匹配可以按任何顺序(例如 9841273)。是否可以检查字符串中 3 个字符中的至少 2 个匹配(在本例中)strMoves?请参阅下面的代码以进行说明。
private readonly string[] strSolutions = new string[8] { "123", "159", "147", "258", "357", "369", "456", "789" };
Private Static string strMoves = "1823742"
foreach (string strResult in strSolutions)
{
Regex rgxMain = new Regex("[" + strMoves + "]{2}");
if (rgxMain.IsMatch(strResult))
{
MessageBox.Show(strResult);
}
}
我在 Regex 中指定“{2}”的部分是我希望结果检查至少 2 个匹配字符的地方,但我的逻辑肯定有缺陷。如果与 strResult 中的字符串相比,这两个字符的顺序是连续的,它将返回 true。如果它的顺序不正确,它将返回 false。我将继续对此进行研究,但如果有人对在哪里查看 Microsoft 文档有任何想法,那将不胜感激!
返回 true 的正确顺序:“ 1 44 2 57”匹配“123” 错误顺序:“ 3 57 1 8”匹配“123” 3 在 1 之前,因此不匹配。