Текущее время: Чт, июн 06 2024, 14:11

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Ср, июн 23 2021, 18:23 
Начинающий
Начинающий

Зарегистрирован:
Ср, июн 23 2021, 16:10
Сообщения: 3
Все привет!

Задача:
Есть строка "Перечислениесредствнал/сч12233454541243123412магазин". Нужно понять есть ли в переданной строке ровно 20 цифр или нет.

Решение которые применялись:
Пытался использовать FIND REGEX '\d{20}' IN <строка> но данная проверка работает только когда цифр<20. Если больше 20 цифр, то данная проверка бесполезна.
Была попытка использовать FIND REGEX '\d{0,20}' IN <строка> - не помогло.
Гугл тоже не помог (ну или я плохо гуглю :D )

Подскажите, пожалуйста, мб кто-то с такой задачей сталкивался и у него есть вариант решения?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Ср, июн 23 2021, 18:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Я использую такое: [0-9]{20}

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Ср, июн 23 2021, 18:57 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
FIND ALL OCCURRENCES OF REGEX '\d{0,21}' IN <строка> RESULTS result_tab?

UPD. попробовал. Если надо убедиться, что точно 20 цифр, то лучше
FIND ALL OCCURRENCES OF REGEX '\d{20,21}' IN <строка> RESULTS result_tab.
тогда в результат попадут значения не менее 20 цифр, а сколько их там точно, можно
глянуть в поле LENGTH.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Чт, июн 24 2021, 09:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1247
Если нужно просто проверить, что в строке есть ровно 20 цифр подряд, то подойдет вот такой регэксп
Code:
(^|\D)\d{20}(\D|$)

Но его нельзя использовать для вычленения той самой последовательности цифр, т.к. он прицепит по одному лишнему символу с каждой стороны (это можно потом выделить др. регеэспом, но на мой взгляд - больно медленно это )

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Вт, июн 29 2021, 13:10 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Сб, июн 08 2019, 12:01
Сообщения: 38
FIND REGEX '\d+' IN <строка>
IF strlen( <найденное_значение> ) NE 20.
" Ошибка
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Поиск точного количества символов в подстроке с помощью регулярных выражений
СообщениеДобавлено: Ср, июн 30 2021, 09:11 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 131
Откуда: Набережные Челны
Пол: Мужской
Кодер написал(а):
Если нужно просто проверить, что в строке есть ровно 20 цифр подряд, то подойдет вот такой регэксп
Code:
(^|\D)\d{20}(\D|$)

Но его нельзя использовать для вычленения той самой последовательности цифр, т.к. он прицепит по одному лишнему символу с каждой стороны (это можно потом выделить др. регеэспом, но на мой взгляд - больно медленно это )

Можно по цифрам тоже добавить подгруппу
Code:
(^|\D)(\d{20})($|\D)
тогда в SUBMATCHES по идее будет


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB