Description
When Compiled regex patterns contain lookbehind assertions, and lookbehind assertion contain a group construction or anchor which quantifier is lazy and minimum = 0, the .NET regex engine throws Bad label content in ILGenerator.
Reproduction Steps
using System;
using System.Text.RegularExpressions;
string input = "a";
string pattern="(?<=()??)a";
//pattern="(?<=()*?)a";
//pattern="(?<=(){0,100}?)a";
//pattern="(?<!()*?)a";
//pattern="(?<=(?:)*?)a";
//pattern="(?<=(wtf)*?)a";
//pattern="(?<=^*?)a";
//pattern=@"(?<=\A*?)a";
//pattern=@"(?<=(wtf)*?)b";
//pattern="(?<=(wtf)*?)";//this pattern would not throw Exception
try
{
Match matchCompiled = new Regex(pattern, RegexOptions.Compiled).Match(input);
Console.WriteLine(matchCompiled.Value);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
Expected behavior
Output:
Actual behavior
Output:
Bad label content in ILGenerator.
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
No response
Description
When Compiled regex patterns contain lookbehind assertions, and lookbehind assertion contain a group construction or anchor which quantifier is lazy and minimum = 0, the .NET regex engine throws
Bad label content in ILGenerator.Reproduction Steps
Expected behavior
Output:
Actual behavior
Output:
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
No response