Текущее время: Вт, апр 16 2024, 15:34

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Регулярное выражение для выборочного удаления лишних символов из текстовой строки
СообщениеДобавлено: Пт, мар 06 2009, 14:58 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Есть некая текстовая строка, в которой содержится почтовый адрес, но могут содержаться всякие ошибочные, например непечатаемые символы. Вопрос, как можно их удалить из строки? Посоветовали сделать REPLACE ALL OCCURRENCES OF REGEX '\W' IN RESULT WITH ''., но тогда убираются пробелы и всякие "-", "/" которые тоже могут содержаться в строке.
Можно ли как-нибудь сделать своё регулярное выражение, чтобы оно не удаляло пробелы и ещё пару спец символов?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, мар 06 2009, 15:27 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
конечно можно.
Code:
* test 1: insert thous. sep
l_regex = 'ваша формула'.

REPLACE
  ALL OCCURRENCES OF
  REGEX l_regex
...


множество примеров REGEX Regular Expression Library, в том числе и ваш - пример Email .

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, мар 06 2009, 15:41 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
ghost написал:
конечно можно.
Code:
* test 1: insert thous. sep
l_regex = 'ваша формула'.

REPLACE
  ALL OCCURRENCES OF
  REGEX l_regex
...


множество примеров REGEX Regular Expression Library, в том числе и ваш - пример Email .


Спасибо :) Только у меня не email, а почтовый адрес "Pupkina str. 1-2/3" что-то вроде этого. Как бы ещё разобраться в этом диком синтаксисе регулярных выражений сделать чтобы удалялись все \w за исключеним "-" и "/"..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, мар 06 2009, 15:54 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
сорри :oops: не внимательно прочитал. но все равно библиотека очень большая. наберите в поиске address . там среди результатов найдете несколько примеров, которые может помогут .вам.

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, мар 06 2009, 20:11 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, ноя 07 2005, 15:59
Сообщения: 1071
Откуда: Moscow
Пол: Мужской
tdebug написал(а):
Спасибо :) Только у меня не email, а почтовый адрес "Pupkina str. 1-2/3" что-то вроде этого. Как бы ещё разобраться в этом диком синтаксисе регулярных выражений сделать чтобы удалялись все \w за исключеним "-" и "/"..

Я не знаю, как в ABAP, но классические regexp - регистрозависимые. В нижнем регистре \w означает все читаемые символы, а в верхнем \W - наоборот. То же самое - \d - цифры, а \D - все, кроме цифр. Группа допустимых символов указывается в квадратных скобках, для Вашего случая, например, так: "[a-zA-Zа-яА-Я\d\s\.\-\/]+" (плюс - квантификатор, означает, что подходящих под шаблон символов в строке больше нуля). Если в ABAP можно использовать модификатор i, означающий "игнорировать регистр", то запись получается короче: "/[a-zа-я\d\s\.\-\/]+/i"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, мар 06 2009, 22:49 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
В результате получилось вот так

Code:
CREATE OBJECT regex
    EXPORTING pattern      = '[^[:word:] ]*[^[:graph:] ]'
              simple_regex = 'X'.


REPLACE ALL OCCURRENCES OF REGEX regex IN text_string WITH space.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Ср, мар 11 2009, 09:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Как бы ещё разобраться в этом диком синтаксисе регулярных выражений

http://www.pcre.ru/eval/ - пишем регэксп и в онлайне смотрим, как он работает.
http://www.pcre.ru и просто хороший ресурс по регэкспам.

Синтаксис не такой уж и дикий. Через некоторые время будете печатать со скоростью 150+ симвл/мин :)

_________________
С уважением.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Пт, авг 02 2019, 07:58 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 90
верно


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Вт, авг 06 2019, 04:20 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Сб, июн 08 2019, 12:01
Сообщения: 38
tdebug написал(а):
В результате получилось вот так

Code:
CREATE OBJECT regex
    EXPORTING pattern      = '[^[:word:] ]*[^[:graph:] ]'
              simple_regex = 'X'.


REPLACE ALL OCCURRENCES OF REGEX regex IN text_string WITH space.


REPLACE ALL OCCURRENCES OF REGEX '[^\w\s\.\-',]' IN text_string WITH space IGNORING CASE.

[^...] - перечисляем символы, которые нужно оставить
\w - буквы, цифры и подчеркивание
\s - пробельные символы

Небольшая справка по регулярным выражениям http://abap4.ru/regular-expression.html


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Регулярное выражение
СообщениеДобавлено: Ср, авг 07 2019, 09:32 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
kernel написал(а):
tdebug написал(а):
В результате получилось вот так

Code:
CREATE OBJECT regex
    EXPORTING pattern      = '[^[:word:] ]*[^[:graph:] ]'
              simple_regex = 'X'.


REPLACE ALL OCCURRENCES OF REGEX regex IN text_string WITH space.


REPLACE ALL OCCURRENCES OF REGEX '[^\w\s\.\-',]' IN text_string WITH space IGNORING CASE.

[^...] - перечисляем символы, которые нужно оставить
\w - буквы, цифры и подчеркивание
\s - пробельные символы

Небольшая справка по регулярным выражениям http://abap4.ru/regular-expression.html

Это очередной PR своего сайта или что? :D
https://sapboard.ru/forum/viewtopic.php?f=13&t=97669&start=0

Цитата:
При использовании материалов ссылка на сайт abap4.ru обязательна.

Интересно, в свои "статьях" Вы делаете ссылку на источники откуда Вы это скопипастили? :) (явно не сами придумали) Что то не видел, там ни одной ссылки...


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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