Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21

Регулярные выражения, MAC-адрес

02.04.2019, 21:34. Показов 9651. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!) Как сделать здесь так, чтобы адрес вводился вручную? Зарание спасибо!!
Само задание:
Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом.
– пример правильных выражений: aE:dC:cA:56:76:54.
– пример неправильных выражений: 01:23:45:67:89:Az.
Мой ответ:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
package laba;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main {
    public static void main(String[] args) {
        Pattern p1 = Pattern.compile("([a-f]+[A-F]+:){3}+([0-9]{2}+:){2}+[0-9]{2}");
        Matcher m1 = p1.matcher( "aE:dC:cA:56:76:54" );
        boolean b = m1.matches();
        System.out.println(b);
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2019, 21:34
Ответы с готовыми решениями:

Регулярные выражения - является ли заданная строка правильным MAC-адресом?
Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом. – пример правильных выражений:...

Регулярные выражения
Привет всем!) Я столкнулся с такой проблемой. 742 model 1 category 1 2218240 Kyiv 1447162980 src_ 2015-11-10 15 43 00 ...

Регулярные выражения
Здравствуйте, Пытаюсь составить регулярное выражение "любойтекстСимволЛюбойтекст" Пишу "^.*c.*$", но работает только...

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.04.2019, 22:35
Лучший ответ Сообщение было отмечено ИваннаВащук как решение

Решение

Java
1
2
3
4
Scanner scan = new Scanner(System.in);
String s = scan.next();
...
Matcher m1 = p1.matcher( s );
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
03.04.2019, 01:24
ИваннаВащук, только регулярка у Вас странная. Это работает?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;
 
public class ValidMac {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Pattern pattern = Pattern.compile("([0-9a-f]{2}:){5}[0-9a-f]{2}", Pattern.CASE_INSENSITIVE);
 
        while ( true ) {
            System.out.print("MAC: ");
            String test = scanner.nextLine();
            if ( test.isEmpty() )
                break;
            Matcher matcher = pattern.matcher(test);
            System.out.println(( matcher.matches() ) ? "Ok" : "Fail");
        }
 
        scanner.close();
    }
}
Code
1
2
3
4
5
6
7
[andrew@easybook other]$ java ValidMac.java 
MAC: aE:dC:cA:56:76:54
Ok
MAC: 01:23:45:67:89:Az
Fail
MAC: 
[andrew@easybook other]$
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
03.04.2019, 08:47  [ТС]
easybudda,
Немного поменяла) Мой вариант:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package regularnivirazhenia;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Scanner;
//aE:dC:cA:56:76:54 для прикладу
 
public class Regularnivirazhenia {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Введіть MAC-адресу: ");
        String string = scan.next();
       Pattern pattern = Pattern.compile("([a-f]+[A-F]+:){3}+([0-9]{2}+:){2}+[0-9]{2}");
        Matcher matcher = pattern.matcher(string);
        if (matcher.find()) System.out.print("Вірно, введена MAC-адреса має право на існування! ");       
        else System.out.print("Шкода, але MAC-адреса не може бути створена у такому форматі. ");
    }
}
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 09:21
а попробуй в твоём вариант такую запись:

acfd:8d9cc:888888:ac:af:95

Добавлено через 1 минуту
вернее, не факт, что последние 3 значения будут только цифры...
во вторых, у Вас длинна до двоеточия не ограничена, к примеру

88888888888888888888888:88:88888888888:8 8:88:88 - пройдёт

Добавлено через 1 минуту
в третьих... не факт, что первые 3 блока будут только буквы!
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 09:26
вот к примеру мой:
Миниатюры
Регулярные выражения, MAC-адрес  
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 10:02
по сути только так на вскидку:
Java
1
2
3
4
5
public static void main(String[] args) {
        String mac = "00:22:43:33:4C:08";
        String pattern = "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}";
        System.out.println(mac.matches(pattern) ? "TRUE" : "FALSE");
    }
Добавлено через 22 минуты
попробую тебе пояснить по регуляркам:
Итак, возьмём твою регулярку и разберём её по шагам:
Java
1
"([a-f]+[A-F]+:){3}+([0-9]{2}+:){2}+[0-9]{2}"
что она нам говорит?!
[a-f] - что нам подходит любой символ в диапазоне от маленькой a до f
+ - он нам говорит, что такой символ должен быть как минимум один и до множества
итого: мы проверяем в любом случае первый символ, и если он не входит в диапазон, то до свидания

[A-F] - после первого символа, если он нам подошёл (он от a до f), проверим второй входит ли он в диапазон от A до F
+ - опять же говорит, что символ точно должен быть такой один и если второй символ не A-F - до свидания
: третий символ мы ожидаем двоеточия
() - группируем.
{3} - означает, что будем ждать тоже самое 3 раза
+ - не знаю, зачем он тут, если мы и так указали, что нужно нам {3} 3 блока
[0-9] - после 3-х блоков, смотрим четвёртый, входит ли символ в диапазон от 0 до 9
{2} - это говорит, что мы желаем видеть 2 символа в этом блоке от 0 до 9
+ - опять он тут не к чему, ведь мы насильно указали, что ждём именно 2 символа, а не от одного до множества
: - точно должно быть после 2-х символов от 0 до 9 двоеточие
() - опять группируем этот блок
{2} - означает, что будем ждать таких блоков 2 раза, где будет 2 символа от 0 до 9 и двоеточие
+ и снова он... крестик - символ красивый, но он тут ни к чему
[0-9] - ждём символ от 0 до 9
{2} - 2 таких символа от 0 до 9

Добавлено через 4 минуты
теперь минусы твоего:
- во первых в первых 3-х блоках он разрешает лишь символы:
1-й символ: от a-f
2-й символ: от A-F
и при том, т.к. стоит +, то таких сочетаний может быть уйма до двоеточия и не обязательно лишь 2

- во вторых два оставшиеся блока имеют право быть лишь цифрами, но тут хоть и стоит +, но всё же указали, что их лишь 2 ({2})

- последний блок не имеет плюсика и это уже хорошо. Он даже почти хорош, если бы не одно но:
разрешены лишь цифры, а МАС может весь состоять из цифр или букв от a-fA-F0-9 (тут как повезёт и кому)
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
03.04.2019, 10:02
Цитата Сообщение от ArtemFM Посмотреть сообщение
попробую тебе пояснить
во тебя прет))! А смайлы колобочные, что значат?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 10:07
Code
1
([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}
тут всё попроще:
[0-9a-fA-F] - могут быть символы цифрами от больших A до F и маленьких от a до f
{2} - символов таких точно равно 2
: - затем за 2-мя символами идёт точно одно двоеточие
() - группируем это в блок
{5} - таких блоков точно должно быть 5
[0-9a-fA-F] - тоже самое описание, что первая строчка
{2} - точно должно быть таких 2 символа...

Добавлено через 49 секунд
надеюсь более-менее подробненько объяснил... Спасибо за внимание

Добавлено через 1 минуту
Aviz__, ))) забыл тегами покрыть этот паттерн )))
Да уж, что-то я с утра сегодня в космосе )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2019, 10:07
Помогаю со студенческими работами здесь

Регулярные выражения
Здравствуйте, Как добавить символ '*' без ее специального значение в регулярное выражение? Все, что до нее или после - неважно ...

Регулярные выражения
Здравствуйте столкнулся с проблемой в регулярных выражениях подскажите что делать есть номер Украины +380765124356 нужно с помощью...

Регулярные выражения
Привет всем, сегодня на лабе дали задачу : "Вывести позицию всех букв "а", используя регулярные выражения" Я не прошу решать, если...

Регулярные выражения
помогите разобраться в таком вопросе: Я знаю два возможные варианта использования регулярных выражений 1. Pattern p =...

Регулярные выражения
В файле строки вида:"Иванов Иван Иванович 31 12 1987" Мне нужно, чтобы строку разделило на 2 части: ФИО и все остальное. Вроде де бы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru