Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > непонятки с регуляркой


Автор: dj100500 15.12.2010, 14:18
 private string ips = @"[0-255]+\.[0-255]+\.[0-255]+\.[0-255]+";
    private void filtr()
    {
        MatchCollection mc = Regex.Matches(richTextBox1.Text, ips, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
        foreach (Match m in mc)
        {
            richTextBox2.Text += m.Value + "\n";
        }
    }


на вход идут
255.255.255.255
192.0.1.23
127.0.0.1
4.4.4.4
93.0.11.172


а на выходе почемуто
255.255.255.255
2.0.1.2
 smile 

Автор: i2m 15.12.2010, 15:18
dj100500, Ну все правильно, как записал так и работает =) [0-255] не все так просто =) Это идет перечисление в вашем случае оно эквивалентно [0-2] вот и получается что он выдает такие результаты.

Код

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}


Вот регулярка которая будет обрабатывать это все верно, но будет пропускать значения вида 999.999.999.999, если это не суть важно то можно пользоваться, если нет, то городить уже сложные конструкции.

Автор: patap 15.12.2010, 15:24
Цитата(i2m @  15.12.2010,  14:18 Найти цитируемый пост)
но будет пропускать значения вида 999.999.999.999

вот решение, из открытых, так сказать, источников ))
Код

(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

Автор: dj100500 15.12.2010, 15:43
уф а чо так сложно smile  
проверил робит пасибки smile 

Автор: patap 15.12.2010, 16:30
ну как че?) чтобы учесть только валидные числа, т.е. от 0 до 255

Автор: Мурлыкатам_ 15.12.2010, 16:45
Я бы сделал: 

Код

\d+\.\d+\.\d+\.\d+


А затем проверку на исключение с помощью IPAddress.Parse();

Ну это не принципиально, а так, поддержать дискуссию smile

А если строки вообще должны напрямую восприниматься как айпи адрса, я бы вообще убрал регулярное и сделал проверку только с помощью парс метода smile

Автор: YankovskyAndrey 23.12.2010, 18:01
хорошая статья на кодпроджект
http://www.codeproject.com/KB/dotnet/regextutorial.aspx

Добавлено через 36 секунд
есть ещё visual studio extension "что-то там Regex"
удобно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)