CftClub.ru
Клуб специалистов ЦФТ-Банк

Знактокам регулярных выражений - regexp_like

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеПн Дек 17, 2018 15:07   Знактокам регулярных выражений - regexp_like Ответить с цитатой
Полезность: Нет оценки
Подскажите, почему для строки 99.3 следующее рег.выражение дает Истину

Код:
select 1
from dual
where regexp_like('99.3','^\d{1,16}((\.\d{2})|(\d\.\d)|(\d{2}))$')


А для 9.3 - ложь?
Код:
select 1
from dual
where regexp_like('9.3','^\d{1,16}((\.\d{2})|(\d\.\d)|(\d{2}))$')
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Дек 17, 2018 15:37    Ответить с цитатой
Полезность: 1
в первом случае \d{1,16} - первая 9ка
(\d\.\d) - 9.3
во втором условия для .3 нет
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Дек 19, 2018 10:16   Re: Знактокам регулярных выражений - regexp_like Ответить с цитатой
Полезность: 1
Gobur пишет:

[code]...
А для 9.3 - ложь?
[code]select 1
from dual
where regexp_like('9.3','^\d{1,16}((\.\d{2})|(\d\.\d)|(\d{2}))$')[/code]


'^\d{1,16}((\.\d{2})|(\d\.\d)|(\d{2}))$'
- с начала строки
- цифра 1-16 раз
- один из вариантов:
- точка
- две цифры
или
- цифра
- точка
- цифра
или
- ещё две цифры

- конец строки

разбираем.
ведущая цифра 1 раз присутствует.
далее следует точка. Вариант для совпадения только один - первый. Но в первом варианте требуется две цифры после точки, а у тебя одна. Итого ложь.

А не проще ли было вписать певое и последнее условия внутрь веток? Или выкинуть ветки, а сделать три regexp_like с простыми условиями через OR.
Есть также вариант вообще обойтись без регекспов. Будет и проще, и быстрее.
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеСр Дек 19, 2018 10:29   Re: Знактокам регулярных выражений - regexp_like Ответить с цитатой
Полезность: 1
Эмиралька пишет:


А не проще ли было вписать певое и последнее условия внутрь веток? Или выкинуть ветки, а сделать три regexp_like с простыми условиями через OR.
Есть также вариант вообще обойтись без регекспов. Будет и проще, и быстрее.


Это у ЦФТ в приложении по 440-П так проверяется формат числа 16.2.

Но как теперь понятно - условие кривое. Спасибо.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Дек 19, 2018 14:14   Re: Знактокам регулярных выражений - regexp_like Ответить с цитатой
Полезность: Нет оценки
Gobur пишет:
Это у ЦФТ в приложении по 440-П так проверяется формат числа 16.2.

А. ясно. Круто, типа.
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеСр Дек 19, 2018 15:50    Ответить с цитатой
Полезность: 2
Есть очень удобные сервисы типа

https://regex101.com/
https://regexr.com/

визуально показывающие разбор выражения, и результат на ваших данных
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru