Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .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 ![]() |
Автор: i2m 15.12.2010, 15:18 | ||
dj100500, Ну все правильно, как записал так и работает =) [0-255] не все так просто =) Это идет перечисление в вашем случае оно эквивалентно [0-2] вот и получается что он выдает такие результаты.
Вот регулярка которая будет обрабатывать это все верно, но будет пропускать значения вида 999.999.999.999, если это не суть важно то можно пользоваться, если нет, то городить уже сложные конструкции. |
Автор: patap 15.12.2010, 15:24 | ||
вот решение, из открытых, так сказать, источников ))
|
Автор: dj100500 15.12.2010, 15:43 |
уф а чо так сложно ![]() проверил робит пасибки ![]() |
Автор: patap 15.12.2010, 16:30 |
ну как че?) чтобы учесть только валидные числа, т.е. от 0 до 255 |
Автор: Мурлыкатам_ 15.12.2010, 16:45 | ||
Я бы сделал:
А затем проверку на исключение с помощью IPAddress.Parse(); Ну это не принципиально, а так, поддержать дискуссию ![]() А если строки вообще должны напрямую восприниматься как айпи адрса, я бы вообще убрал регулярное и сделал проверку только с помощью парс метода ![]() |
Автор: YankovskyAndrey 23.12.2010, 18:01 |
хорошая статья на кодпроджект http://www.codeproject.com/KB/dotnet/regextutorial.aspx Добавлено через 36 секунд есть ещё visual studio extension "что-то там Regex" удобно |