|
|
|
экранирование в regexp_matches
|
|||
|---|---|---|---|
|
#18+
коллеги, доброго вечера подскажите, плиз, как красиво решить такую задачу: 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, но она не об этом (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 20:34 |
|
||
|
экранирование в regexp_matches
|
|||
|---|---|---|---|
|
#18+
Denis__Ka, функции с регулярными выражениями тут зачем вообще, ради порешать задачу экранирования? и что такое "слово/выражение" в контексте этой задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 22:09 |
|
||
|
экранирование в regexp_matches
|
|||
|---|---|---|---|
|
#18+
p2., функции с регулярными выражениями тут зачем вообще, ради порешать задачу экранирования? а вы предлагаете использовать LIKE? и что такое "слово/выражение" в контексте этой задачи. смотрите, есть таблица с неким текстом, например, ответы сотрудников клиентам. (таблица 1 в моем примере) нужно отметить те записи, в которых содержатся запрещенные слова (справочник запрещенных слов и выражений - таблица 2) слово / выражение - это слово или словосочетание, например, "драка", "сиреневый вертолет" )) запрос типа: Код: plsql 1. 2. даст мне строки, в которых есть запрещенное слово "драка" - именно как отдельно стоящее слово чтобы решить эту задачу через LIKE мне придется через OR объединить десятка два возможных вариантов, как слово может встраиваться в предложение, т.е. будут ли вокруг пробелы, запятые, тире и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 22:49 |
|
||
|
экранирование в regexp_matches
|
|||
|---|---|---|---|
|
#18+
Denis__Kaбудут ли вокруг пробелы, запятые, тире и т.д.определить позицию подстроки, получить символы слева и справа или их отсутствие, проверить на список символов разделителей или символов-слов. однако приведенный ранее пример "u.s."->"U.S.S.R." не вписывается в продемонстрированное регехпом определение "слов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 23:34 |
|
||
|
экранирование в regexp_matches
|
|||
|---|---|---|---|
|
#18+
p2., предложенный вами алгоритм безусловно имеет право на жинь, но он же делает тоже самое, что и regexp_matches, только все эти проверки, что делает regexp_matches, придется делать самому в общем мой вопрос все еще открыт: есть ли у кого вариант экранирования атомов регулярных выражений в строке - шаблоне поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 23:45 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=95&tid=1997384]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 385ms |

| 0 / 0 |
