diff --git a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexFindOptimizations.cs b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexFindOptimizations.cs index f40be293572ba..72d3f19aef404 100644 --- a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexFindOptimizations.cs +++ b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexFindOptimizations.cs @@ -142,7 +142,7 @@ public RegexFindOptimizations(RegexNode root, RegexOptions options) // If there are multiple leading strings, we can search for any of them. if (compiled) { - if (RegexPrefixAnalyzer.FindPrefixes(root) is { Length: > 1 and < 8 } prefixes) + if (RegexPrefixAnalyzer.FindPrefixes(root) is { Length: > 1 } prefixes) { LeadingPrefixes = prefixes; FindMode = FindNextStartingPositionMode.LeadingStrings_LeftToRight; diff --git a/src/libraries/System.Text.RegularExpressions/tests/UnitTests/RegexPrefixAnalyzerTests.cs b/src/libraries/System.Text.RegularExpressions/tests/UnitTests/RegexPrefixAnalyzerTests.cs index 657877a15c25b..aff4874dfaa1f 100644 --- a/src/libraries/System.Text.RegularExpressions/tests/UnitTests/RegexPrefixAnalyzerTests.cs +++ b/src/libraries/System.Text.RegularExpressions/tests/UnitTests/RegexPrefixAnalyzerTests.cs @@ -74,8 +74,7 @@ public void FindFirstCharClass_StressDeep() [InlineData("abc|def", new[] { "abc", "def" })] [InlineData("abc|def|(ghi|jklm)", new[] { "abc", "def", "ghi", "jklm" })] [InlineData("abc[def]ghi", new[] { "abcdghi", "abceghi", "abcfghi" })] - [InlineData("abc[def]ghi|[jkl]", new[] { "abcdghi", "abceghi", "abcfghi", "j", "k", "l" })] - [InlineData("abcdefg|h", new[] { "abcdefg", "h" })] + [InlineData("abc[def]ghi|[jkl]m", new[] { "abcdghi", "abceghi", "abcfghi", "jm", "km", "lm" })] [InlineData("agggtaaa|tttaccct", new[] { "agggtaaa", "tttaccct" })] [InlineData("[cgt]gggtaaa|tttaccc[acg]", new[] { "cgggtaaa", "ggggtaaa", "tgggtaaa", "tttaccca", "tttacccc", "tttacccg" })] [InlineData("a[act]ggtaaa|tttacc[agt]t", new[] { "aaggtaaa", "acggtaaa", "atggtaaa", "tttaccat", "tttaccgt", "tttacctt" })] @@ -83,6 +82,8 @@ public void FindFirstCharClass_StressDeep() [InlineData("agg[act]taaa|ttta[agt]cct", new[] { "aggataaa", "aggctaaa", "aggttaaa", "tttaacct", "tttagcct", "tttatcct" })] [InlineData("\b(abc|def)\b", new[] { "abc", "def" })] [InlineData("^(abc|def)$", new[] { "abc", "def" })] + [InlineData("abcdefg|h", null)] + [InlineData("abc[def]ghi|[jkl]", null)] public void FindPrefixes(string pattern, string[] expectedSet) { RegexTree tree = RegexParser.Parse(pattern, RegexOptions.None, CultureInfo.InvariantCulture);