powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярные выражения
7 сообщений из 32, страница 2 из 2
Регулярные выражения
    #39704797
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov, Здравствуйте , получается запрос такого типа:
select *
from text
where regexp_like(text,q'~([^[:alpha:]-]|^)
([[:alpha:]]|[[:alpha:]]-|[[:alpha:]]+(-[[:alpha:]]+)?|-[[:alpha:]]+|[[:alpha:]]-)
[^[:alpha:]-]((.*?[^[:alpha:]-])?\2([^[:alpha:]-]|$)){2,}~','ix');

Но он также выводит строки
Я. Я Я
Я Я . Я
Как исправить не знаю + плохо понимаю как работают .*? и )?
...
Рейтинг: 0 / 0
Регулярные выражения
    #39704821
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.kaплохо понимаю как работают .*? и )? https://www.rexegg.com/regex-quantifiers.html#cheat_sheet
...
Рейтинг: 0 / 0
Регулярные выражения
    #39704824
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov https://www.rexegg.com/regex-quantifiers.html#cheat_sheet Ссылка вредна несоответствием диалекту.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39704827
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov, Одиночный символ тоже считается словом , как раз одиночные символ и не выводятся
...
Рейтинг: 0 / 0
Регулярные выражения
    #39705015
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov, И в пределах одного предложения 3 раза , ограничением предложения считаются (. ! ? ) на счёт конца строки не уверен
...
Рейтинг: 0 / 0
Регулярные выражения
    #39708651
KDA_666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey odegov, доброго времени суток.
Заинтересовал этот пост, так как сам недавно начал изучать регулярные выражения.
В продолжении данной темы: не могли бы помочь с пониманием по данным функциям?

Условие такое: запрос должен выводить те записи, слово в которых повторяется строго больше двух раз (3 и более) в одном предложении, причём предложений может быть несколько (под предложением понимаем набор символов, в конце ограниченных "." или "?" или "!" или последний уникальный случай, где есть запись в виде одного единственного предложения, по типу стиха с знаками препинания, но не ограниченная ни одним из символов "." "?" "!") - почти как у автора данной темы, но с некоторым дополнением.
Под пониманием "слова" есть некоторые сложности: оно может состоять из одной буквы, а также слова с тире ("-слово" или "слово-" или "одно-слово" или "слово") - это разные слова, причём регулярное выражение не должно учитывать отдельно взятую букву как слово в другом слове (по типу "Я гиря гиря" - не должен выводить).

Составил такую регулярку:
select*
from text
where regexp_like(txt, '(^|[^а-я])([а-я]+-[а-я]+|[а-я]+-|-[а-я]+|[а-я]+)[^!.?]*?[^а-я]\2[^!.?]*?[^а-я]\2[^а-я]', 'i')

Но она не работает со словами с тире.
Не могли бы вы помочь с тем, где её нужно дополнить или в каком месте её лучше переделать?
Заранее спасибо.

Для примера приведу некоторые данные:
Надо надо надо. // должен вывести
Надо-надо надо надо надо-надо. // не длолжен вывести
Надо -надо надо- // не должен вывести
Надо-надо надо. // не должен вывести
Надо-надо надо надо-надо надо надо- ненадо надо- надо-ело. // не должен вывести
Надо-надо надо надо-надо надо надо-надо. // должен вывести
Надо надо- — надо- надо — надо-надо — надо-надо. // не должен вывести
Надо- надо-надо — надо- надо — надо-надо — надо-надо // должен вывести
Я гиря я. // не должен вывести
Я гиря гиря я. // не должен вывести
Я гиря я гиря я. // должен вывести
Я. Я я. // не должен вывести
Я я я // должен вывести
Я. Я мясо Я. я Я. // не должен вывести
позвони позвони позвонишь? // не должен вывести
позвони позвонишь позвони? // не должен вывести
позвони позвони позвон? // не должен вывести
...
Рейтинг: 0 / 0
Регулярные выражения
    #39709570
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with
  t as (
    select 'Надо надо надо. // должен вывести' s from dual union all
    select 'Надо-надо надо надо надо-надо. // не должен вывести' from dual union all
    select 'Надо -надо надо- // не должен вывести' from dual union all
    select 'Надо-надо надо. // не должен вывести' from dual union all
    select 'Надо-надо надо надо-надо надо надо- ненадо надо- надо-ело. // не должен вывести' from dual union all
    select 'Надо-надо надо надо-надо надо надо-надо. // должен вывести' from dual union all
    select 'Надо надо- — надо- надо — надо-надо — надо-надо. // не должен вывести' from dual union all
    select 'Надо- надо-надо — надо- надо — надо-надо — надо-надо // должен вывести' from dual union all
    select 'Я гиря я. // не должен вывести' from dual union all
    select 'Я гиря гиря я. // не должен вывести' from dual union all
    select 'Я гиря я гиря я. // должен вывести' from dual union all
    select 'Я. Я я. // не должен вывести' from dual union all
    select 'Я я я // должен вывести' from dual union all
    select 'Я. Я мясо Я. я Я. // не должен вывести' from dual union all
    select 'позвони позвони позвонишь? // не должен вывести' from dual union all
    select 'позвони позвонишь позвони? // не должен вывести' from dual union all
    select 'позвони позвони позвон? // не должен вывести' from dual
  )
select *
from t
where regexp_like(s,
                  q'~(^|[^[:alpha:]-])
                     ([[:alpha:]]+(-[[:alpha:]]*)?|-[[:alpha:]]+)
                     ([^[:alpha:].!?-]([^.!?]*?[^[:alpha:].!?-])?\2){2}
                     ([^[:alpha:]-]|$)~',
                  'ix');

SНадо надо надо. // должен вывестиНадо-надо надо надо-надо надо надо-надо. // должен вывестиНадо- надо-надо — надо- надо — надо-надо — надо-надо // должен вывестиЯ гиря я гиря я. // должен вывестиЯ я я // должен вывести
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярные выражения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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