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