Регулярное выражение для разбора IP-адреса - C#
Формулировка задачи:
Приветствую,форумчане. Помогите с задачкой:
В сообщении могут содержаться IP-адреса компьютеров в формате d.d.d.d, где
d – целое число из диапазона от 0 до 255. Вывести все IP-адреса содержащиеся в тексте.
написал я код:
На 1,3,4 и 5 тексте работает правильно,а вот со вторым пишет,что это ip, хотя там число 256. как я понял он считает не как 256,а как 56,отбрасывая двойку. пытался регулярное выражение изменить на
но все равно считает,что 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));
}
}
}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-адреса»
textual
Листинг программы
@"^((1\d\d|2([0-4]\d|5[0-5])|\d\d?)\.?){4}$"