powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / экранирование в regexp_matches
6 сообщений из 6, страница 1 из 1
экранирование в regexp_matches
    #39184262
Denis__Ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
коллеги, доброго вечера

подскажите, плиз, как красиво решить такую задачу:
1. есть таблица 1 с данными
2. есть таблица 2 с запрещенными словами / выражениями
3. требуется:
отметить в таблице 1 записи, в которых встречается слово / выражение из таблицы 2

в чем сложность:
слово / выражение в таблице 2 может содержать не только буквы / цифры, но и скажем точки, *, \ и прочие символы,
которые для regexp_matches являются атомами регулятного выражения.

что нужно:
функция, которая бы экранировала эти символы перед использованием в regexp_matches
пример:
строка, которую должны найти и отметить в таблице 1: "back in U.S.S.R."
запрещенное слово: "u.s."
слово для поиска после экранирования: "u\.,s\."

может кто уже озадачивался этим вопросом и нашел / писал такую функцию, буду признателен, если поделитесь опытом

в результате гугления нашел только quote_literal, но она не об этом ((
...
Рейтинг: 0 / 0
экранирование в regexp_matches
    #39184306
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis__Ka,

функции с регулярными выражениями тут зачем вообще, ради порешать задачу экранирования?
и что такое "слово/выражение" в контексте этой задачи.
...
Рейтинг: 0 / 0
экранирование в regexp_matches
    #39184324
Denis__Ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.,

функции с регулярными выражениями тут зачем вообще, ради порешать задачу экранирования?
а вы предлагаете использовать LIKE?

и что такое "слово/выражение" в контексте этой задачи.
смотрите, есть таблица с неким текстом, например, ответы сотрудников клиентам. (таблица 1 в моем примере)
нужно отметить те записи, в которых содержатся запрещенные слова (справочник запрещенных слов и выражений - таблица 2)
слово / выражение - это слово или словосочетание, например, "драка", "сиреневый вертолет" ))
запрос типа:

Код: plsql
1.
2.
select array_to_string(regexp_matches(ответы_сотрудников, '(?:^|\y|\s)(драка)(?:\y|$|\s)', 'ig'), '')
from таблица_1



даст мне строки, в которых есть запрещенное слово "драка" - именно как отдельно стоящее слово
чтобы решить эту задачу через LIKE мне придется через OR объединить десятка два возможных вариантов,
как слово может встраиваться в предложение, т.е. будут ли вокруг пробелы, запятые, тире и т.д.
...
Рейтинг: 0 / 0
экранирование в regexp_matches
    #39184345
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis__Kaбудут ли вокруг пробелы, запятые, тире и т.д.определить позицию подстроки, получить символы слева и справа или их отсутствие, проверить на список символов разделителей или символов-слов.
однако приведенный ранее пример "u.s."->"U.S.S.R." не вписывается в продемонстрированное регехпом определение "слов".
...
Рейтинг: 0 / 0
экранирование в regexp_matches
    #39184351
Denis__Ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.,

предложенный вами алгоритм безусловно имеет право на жинь,
но он же делает тоже самое, что и regexp_matches, только все эти проверки, что делает regexp_matches, придется делать самому

в общем мой вопрос все еще открыт:
есть ли у кого вариант экранирования атомов регулярных выражений в строке - шаблоне поиска?
...
Рейтинг: 0 / 0
экранирование в regexp_matches
    #39184357
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis__Kaвсе еще открытоткрыт вопрос, что такое слово, а регулярки, если так хочется применить более цпу-емкое решение, можно и к нерегехповой замене искомой подстроки на, например, "этослово".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / экранирование в regexp_matches
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]