Не находит числа в файле

введите сюда описание изображенияС помощью регулярных выражений найти в тексте все даты. Даты записаны в европейском формате (день-месяц-год)

using System;
using System.Text.RegularExpressions;
using System.IO;

namespace _6._1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            string dataFromFile = File.ReadAllText(@"C:\Users\Malson\Desktop\1.txt");
            
            Regex reg = new Regex(@"^\d{1,2}([-. /])\d{1,2}\1\d{2,4}$");

            MatchCollection roj = reg.Matches(dataFromFile);

            if (roj.Count > 0)
            {
                foreach (Match match in roj)
                    Console.WriteLine(match.Value);
            }
            else
            {
                Console.WriteLine("Совпадений не найдено");
            }


        }
    }
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Alexander Petrov
new Regex(@"^\d{1,2}([-. /])\d{1,2}\1\d{2,4}(?=\r?$)", RegexOptions.Multiline);

Параметр RegexOptions.Multiline нужен для того, чтобы символы ^ и $ работали для каждой строки, а не для всего текста.

Якорь $ находит совпадение в конце строки или перед символом \n. А в тексте наверняка содержатся последовательности \r\n. Поэтому нужно добавить поиск \r (необязательный). И чтобы сам этот символ не захватывался, используем просмотр вперёд.

→ Ссылка