Регулярное выражение для разбора IP-адреса - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую,форумчане. Помогите с задачкой: В сообщении могут содержаться IP-адреса компьютеров в формате d.d.d.d, где d – целое число из диапазона от 0 до 255. Вывести все IP-адреса содержащиеся в тексте. написал я код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
 
namespace Prog18_nul_10
{
    class Program
    {
        static void Main()
            
        {
            Regex r = new Regex(@"(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|2[0-4]\d|25[0-5])");
            string text1 = "ip = 128.0.0.1";
            string text2 = "ip = 256.0.0.1";
            string text3 = "ip = 0.0.0.0";
            string text4 = "ip = 255.255.255.255";
            string text5 = "ip = 255:228:0:0";
            Console.WriteLine(r.IsMatch(text1));
            Console.WriteLine(r.IsMatch(text2));
            Console.WriteLine(r.IsMatch(text3));
            Console.WriteLine(r.IsMatch(text4));
            Console.WriteLine(r.IsMatch(text5));
        }
    }
}
На 1,3,4 и 5 тексте работает правильно,а вот со вторым пишет,что это ip, хотя там число 256. как я понял он считает не как 256,а как 56,отбрасывая двойку. пытался регулярное выражение изменить на
Regex r = new Regex(@"((([01]?)|\D\d\d?|2[0-4]\d|25[0-5])\.){3}(([01]?)|\D\d\d?|2[0-4]\d|25[0-5])");
но все равно считает,что ip содержится в сообщении. что не так?)

Решение задачи: «Регулярное выражение для разбора IP-адреса»

textual
Листинг программы
@"^((1\d\d|2([0-4]\d|5[0-5])|\d\d?)\.?){4}$"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы