Регулярное выражение для разбора 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}$"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д