Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789

Есть ли аннотация для регулярных выражений ?

22.10.2018, 12:08. Показов 1767. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такие выражения, вызывают массу предупреждений в Intelliji Idea.

Есть ли способ как то пометить их соответствующей аннотацией, чтобы Idea не обращала внимания ?

Или вообще как-то по другому их объявить ?


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class RegexDate {
 
    private static final String REGEX_ONE = "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)" +
            "(?:0?[1,3-9]|1[0-2])\\2))" +
            "(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?" +
            "(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$" +
            "|^(?:0?[1-9]|1\\d|2[0-8])" +
            "(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$";
 
 
    private static final String REGEX_SECOND = "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\\1|" +
            "(?:(?:29|30)" +
            "(\\/|-|\\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\\2))" +
            "(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)" +
            "(?:0?2|(?:Feb))\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|" +
            "(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)" +
            "(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))\\4" +
            "(?:(?:1[6-9]|" +
            "[2-9]\\d)?\\d{2})$";
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2018, 12:08
Ответы с готовыми решениями:

Есть ли в С# встроеные библиотеки регулярных выражений?
Есть ли в С# встроеные библиотеки регулярных выражений?

Есть ли в VBA for MSAccess что-то на подобии регулярных выражений RegExp?
Есть ли в VBA for MSAccess что-то ан подобии регулярнsх вsражений RegExp, метки времени unixtimestamp или что-то подобное этому?

Паттерн для регулярных выражений
Доброго времени суток, возникла задача извлечь из строки типа (строка,число) строку, поискал в сторону регулярных выражений, но не особо...

14
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
22.10.2018, 13:06
Цитата Сообщение от masli Посмотреть сообщение
Вот такие выражения, вызывают массу предупреждений
Например?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
22.10.2018, 16:35
Цитата Сообщение от masli Посмотреть сообщение
Java
1
2
3
4
5
6
private static final String REGEX_ONE = "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)" +
* * * * * * "(?:0?[1,3-9]|1[0-2])\\2))" +
* * * * * * "(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?" +
* * * * * * "(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$" +
* * * * * * "|^(?:0?[1-9]|1\\d|2[0-8])" +
* * * * * * "(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$";
Вставил в IDEA код выше. Предупреждений, кроме того, что REGEX_ONE нигде не используется нет. Что я сделал не так?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.10.2018, 17:58
Цитата Сообщение от JIeIIIa Посмотреть сообщение
Что я сделал не так?
Идея журить будет, если, например, сунуть это выражение напрямую в Pattern.compile("...");
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
22.10.2018, 18:06
iSmokeJC, в смысле предупреждения что выражение написано "криво"?
Кстати, что там проверяться должно? А то я глядя на выражения не пойму)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.10.2018, 18:11
JIeIIIa, ну да, предупреждения об излишках, redundant group nesting... На компиляцию не влияет, просто, видать, ТС'а напрягают маркеры
Кстати, даже в настройках инспекции не нашел эту опцию, чтоб отключить
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
22.10.2018, 20:02  [ТС]
Цитата Сообщение от JIeIIIa Посмотреть сообщение
Кстати, что там проверяться должно? А то я глядя на выражения не пойму)
анализируется строка на предмет даты
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
22.10.2018, 20:10  [ТС]
вот так выглядит
Миниатюры
Есть ли аннотация для регулярных выражений ?   Есть ли аннотация для регулярных выражений ?   Есть ли аннотация для регулярных выражений ?  

0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
22.10.2018, 20:11  [ТС]
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.training.carshop.web.utils.date;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/** класс содержит регулярные выражения, согласно которым,
* анализируется строка, которая возможно содержит дату
* */
public class RegexDate {
 
    private static final String REGEX_ONE = "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)" +
            "(?:0?[1,3-9]|1[0-2])\\2))" +
            "(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?" +
            "(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$" +
            "|^(?:0?[1-9]|1\\d|2[0-8])" +
            "(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$";
 
 
    private static final String REGEX_SECOND = "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\\1|" +
            "(?:(?:29|30)" +
            "(\\/|-|\\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\\2))" +
            "(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)" +
            "(?:0?2|(?:Feb))\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|" +
            "(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)" +
            "(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))\\4" +
            "(?:(?:1[6-9]|" +
            "[2-9]\\d)?\\d{2})$";
 
    private static final String REGEX_THIRD = "^(?:(?:(?:0[1-9]|[12]\\d|3[01])/(?:0[13578]|1[02])|(?:0[1-9]|[12]\\d|30)/" +
            "(?:0[469]|11)|" +
            "(?:0[1-9]|1\\d|2[0-8])/02)/(?!0000)\\d{4}|(?:(?:0[1-9]|[12]\\d)/02/(?:(?!0000)" +
            "(?:[02468][048]|[13579]" +
            "[26])00|(?!..00)\\d{2}(?:[02468][048]|[13579][26]))))$";
 
 
    private boolean isStringDateOne(String date){
 
        Pattern p = Pattern.compile(REGEX_ONE);
        Matcher m = p.matcher(date);
 
        return m.find();
    }
 
 
    private boolean isStringDateSecond(String date){
 
        Pattern p = Pattern.compile(REGEX_SECOND);
        Matcher m = p.matcher(date);
 
        return m.find();
    }
 
    private boolean isStringDateThird(String date){
 
        Pattern p = Pattern.compile(REGEX_THIRD);
        Matcher m = p.matcher(date);
 
        return m.find();
    }
 
 
    public boolean isStringDate(String date) {
 
        return isStringDateOne(date) || isStringDateSecond(date) || isStringDateThird(date);
 
    }
 
 
}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.10.2018, 20:21
а зачем дату разбирать регулярными выражениями?

Добавлено через 15 секунд
еще и вот такими
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
22.10.2018, 20:31
masli, Redundant group nesting судя по всему всегда включено. Можете создать сообщение в баг-трекере IntelliJ. Все остальное можно отключить в инспекциях.

Цитата Сообщение от xoraxax Посмотреть сообщение
еще и вот такими
Вопрос на собеседование
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
22.10.2018, 21:01  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
а зачем дату разбирать регулярными выражениями?
Хорошо, покажите как можно разобрать дату

dd.MM.yyyy

dd-MM-yyyy

dd/MM/yyyy

2012-05-20 hh: mm: ss

12-30-2016 (mm-dd-yyyy) или 12-3-2016 (мм-d-yyyy) или 1-3-2016 (m-d-yyyy) или 1-30-2016 (m-dd-yyyy)

Поддержка високосных годов

Предложите свое решение

Добавлено через 5 минут
пользователь вводит дату так, как он знает, вы должны это прочитать, затем преобразовать к виду, удобному для того, чтобы СУБД MySQL могла сохранить эти данные, а точнее вы должны перед сохранением в базу данных, преобразовать введенную дату в правильный формат.

Что собственно и сделал.

Если знаете другое решение, поделитесь.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.10.2018, 21:03
Лучший ответ Сообщение было отмечено korvin_ как решение

Решение

public static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
22.10.2018, 21:14  [ТС]
Анализ нужен для того, чтобы понять что введена дата.

Мне возвращается значение типа данных boolean, и если оно подходит, то данные передаются на обработку.

А преобразование в нужный формат я уже реализовал.

Регулярное выражение нужно только для анализа введенных данных. Если они не валидны, тогда пользователю возвращается сообщение об ошибке.

Вопрос только в этом, в данном случае, а не в самом форматировании.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
22.10.2018, 21:17
Цитата Сообщение от masli Посмотреть сообщение
Поддержка високосных годов
Это вообще к парсингу не имеет отношения.

Цитата Сообщение от masli Посмотреть сообщение
пользователь вводит дату так, как он знает, вы должны это прочитать
Пользователю нужно дать DateTimePicker и не насиловать мозг.

Добавлено через 1 минуту
Цитата Сообщение от masli Посмотреть сообщение
Анализ нужен для того, чтобы понять что введена дата.
Мне возвращается значение типа данных boolean, и если оно подходит, то данные передаются на обработку.
Вот и перехватывай ошибку от LocalDateTime.parse.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2018, 21:17
Помогаю со студенческими работами здесь

Аналог stripos() для регулярных выражений
Есть ли аналог функции stripos() для регулярных выражений? А вообще задача заключается в поиске слов и их выделении тегом...

Создание и парсинг шаблонов для регулярных выражений
Доброе время суток,уважаемые посетители форума! Помогите пожалуйста написать след. регулярное выражение. Необходимо проверить строку на...

Применение регулярных выражений для фильтра тегов
Всем доброго дня! Мне нужно реализовать функцию, которая преобразует входной текст в безопасный html-текст и разрешает использовать...

Задачки для начинающих + немного регулярных выражений
Добрый день. Решила несколько задачек, вроде бы всё работает, но хотелось бы, чтобы специалисты дали комментарии относительно правильности...

Использование регулярных выражений для получения определенных строк
ребят помогите пожалуйста, не могу сделать и все (((( есть файл, в этом файле нужно найти строки типа: 10.05.2012 16:17:38,977 ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru