Regex match differs between .net versions

Viewed 126

I am getting different regex matches when running below sample with .netstandard2.0 and .net6.0

Code

var stringToMatch = "sydney bogota berlin tokyo nairobi denver rio";
Console.WriteLine($"Input: {stringToMatch}");

var reg = new System.Text.RegularExpressions.Regex(@"(\b(?!bogo|nai)\w*\b)\w+");

Console.WriteLine($"Output:");
foreach (var match in reg.Matches(stringToMatch))
{
    Console.WriteLine(match);
}

csproj-netstandard2.0

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
    <ImplicitUsings>enable</ImplicitUsings>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

csproj-net6

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>net6.0</TargetFrameworks>
    <ImplicitUsings>enable</ImplicitUsings>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

Output - netstandard2.0 & net472

Returning matches

Input: sydney bogota berlin tokyo nairobi denver rio
Output:
sydney
berlin
tokyo
denver
rio

Output - net5.0 & net6.0

Not returning any matches

Input: sydney bogota berlin tokyo nairobi denver rio
Output:

https://regex101.com/r/Xn7X3w/1

1 Answers
Related