3. Match Dates, Lab: Regular Expressions C#
Привет Колеги!
За задачата Match Dates имам три възможни регекса. Първият е мой, вторият е на колега а третия е показан от Софтуни в документа със задачата. Онлайн(в Regex101 и RegXr) и трите регекса работят перфектно, мачват си всичко както трябва. Докато след имплементацията им във C#, работи само първия а вторите два не мачват нищо. Ето ги въпросните регекси:
1. Моя: @"\b(?<day>[0-3][0-9])(?:(-)|(.)|(\/))(?<month>[A-Z][a-z]{2})(\1|\2|\3)(?<year>[0-9]{4})\b";
2. На колегата: @"\b(?<day>[\d]{2})([-\/.])(?<month>[A-Z][a-z]{2})\2(?<year>[0-9]{4})\b";
3. Показан от Softuni: @"\b(?<day>\d{2})([-.\/])(?<month>[A-Z][a-z]{2})\2(?<year>\d{4})\b";
Ето го и input-a:
13/Jul/1928, 10-Nov-1934, , 01/Jan-1951,f 25.Dec.1937 23/09/1973, 1/Feb/2016
При един и същ Input, онлайн работят и трите регекса а във Visual Studio само първия.
Има ли някой, който може да обясни разликата в поведението?
Благодаря предварително!
Thanks!
I have already understand: in C# group 1 is the first group without name, group 2 is the second group without name..., but all groups with name are after tha last group without name in order from left to the right.
By the way does https://regex101.com/ has the option to set the regex to work correctly for C#?
Not that I know of unfortunately, I always had to double-check when I used some Regex for my C# code (same thing with https://regexr.com). Basically, you only had to be carefull with how groups were being interpreted by C# (named, unnamed, ...). The practise exams will show you what to watch out for and when you get an RunTime error then just check your Regex (https://www.regular-expressions.info/named.html for some additional reading-help).
Best,