powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярные выражения
32 сообщений из 32, показаны все 2 страниц
Регулярные выражения
    #39700807
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается найти слово которое ограничено чем угодно повторяется два раза и находится в разных предложениях , получается что-то вроде этого но не работает


SELECT * FROM text
where regexp_like( text, (^|\s*([A-Za-z]+|[A-Za-z]+-|[A-Za-z]+-[A-Za-z])+)([.\s,;:!?])\1);



bad girls, bad boys,bad phone. phone phone mam: phone phone?
wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .
hustone, we have a problem, big problem. Very big, big, big
high cost - high perfomance, high
full-hd,tv-full,full-hd:full-hd
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700886
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with
  t as (
    select 'bad girls, bad boys,bad phone. phone phone mam: phone phone?' s
    from dual union all
    select 'wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .'
    from dual union all
    select 'hustone, we have a problem, big problem. Very big, big, big'
    from dual union all
    select 'high cost - high perfomance, high'
    from dual union all
    select 'full-hd,tv-full,full-hd:full-hd'
    from dual
  )
select *
from t
where regexp_like(
        s, '(^|[^a-z])([a-z]{2,})[^.]*\.(.*[^a-z])?\2([^a-z]|$)', 'i'
      );


Sbad girls, bad boys,bad phone. phone phone mam: phone phone?hustone, we have a problem, big problem. Very big, big, big
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700891
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
29.
SQL> with t as (select
  2  'bad girls, bad boys,bad phone. phone phone mam: phone phone?
  3  wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .
  4  hustone, we have a problem, big problem. Very big, big, big
  5  high cost - high perfomance, high
  6  full-hd,tv-full,full-hd:full-hd' as s from dual
  7  )
  8  select regexp_substr
  9         ( regexp_replace(s,      '(^|$|[[:space:],;:.!?])', ' \1 ')
 10         , '( ([[:alpha:]]+(-[[:alpha:]]+)?) ).*?[,;:.!?].*?\1'
 11         , 1
 12         , i
 13         , 'n'
 14         , 2
 15         ) as word
 16    from t, (select level as i from dual connect by level <= 11)
 17  ;

WORD
------------------------------------------------------------------------
bad
phone
phone
wup
OBAMA
problem
big
high
full-hd
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700892
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

Нет немного не так , надо что бы выводилось строка в которой слово повторяется больще двух раз в пределе одного предложения.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700905
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with
  t as (
    select 'bad girls, bad boys,bad phone. phone phone mam: phone phone?' s from dual
    union all
    select 'wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .' from dual
    union all
    select 'hustone, we have a problem, big problem. Very big, big, big' from dual
    union all
    select 'hustone, we have a problem, big problem. Very big, bi...' from dual
    union all
    select 'high cost - high perfomance, high' from dual
    union all
    select 'full-hd,tv-full,full-hd:full-hd' from dual
  )
select *
from t
where regexp_like(
        s, '(^|[^a-z])([a-z]{2,})[^.]*\.((.*[^a-z])?\2([^a-z]|$)){2,}', 'i'
      )
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700912
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

Нет , Смысл в том , что бы вывести строки где одно слово повторяется больше двух раз в одном предложении , при чём слово может быть с тире , типо Мама и мама- два разных слова
Надо огранить слово и найти по шаблону
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700916
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это про что тогда?Pol.kaНе получается найти слово которое ограничено чем угодно повторяется два раза и находится в разных предложениях
, получается что-то вроде этого но не работает


SELECT * FROM text
where regexp_like( text, (^|\s*([A-Za-z]+|[A-Za-z]+-|[A-Za-z]+-[A-Za-z])+)([.\s,;:!?])\1);



bad girls, bad boys,bad phone. phone phone mam: phone phone?
wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .
hustone, we have a problem, big problem. Very big, big, big
high cost - high perfomance, high
full-hd,tv-full,full-hd:full-hd
Приведите пример того, что хотите получить на выходе.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700936
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

Это то же самое
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700938
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,
Например

1 Мама мама мама , мама- мама-
2 мимо мима мими , мимо-мимо , мимо-мимо.
3 Назад вперёд вверх вниз. Вверх вниз
4 Семь восемь. Семь семь

Что бы выводились только 1 2 4 строки
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700949
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.
with
  t as (
    select 'bad girls, bad boys,bad phone. phone phone mam: phone phone? ' s from dual
    union all
    select 'wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA . ' from dual
    union all
    select 'hustone, we have a problem, big problem. Very big, big, big' from dual
    union all
    select 'high cost - high perfomance, high ' from dual
    union all
    select 'full-hd,tv-full,full-hd:full-hd' from dual
    union all
    select 'В лесу родилась елочка. В лесу,лесу-лесу,лесу она росла. В лесу, лесу' from dual
    union all
    select 'В лесу родилась елочка. В лесу,лесу она росла' from dual
  )
select *
from t
where regexp_like(s,
                  q'~(^|[^[:alpha:]-])
                     ([[:alpha:]]([[:alpha:]]*-)?[[:alpha:]]+)
                     [,.;:?![[:space:]]\2
                     ([^[:alpha:]-]|$)~',
                  'x');


Sbad girls, bad boys,bad phone. phone phone mam: phone phone?wup, wup, BORAK OBAMA OBAMA MAMA; it is OBAMA .full-hd,tv-full,full-hd:full-hdВ лесу родилась елочка. В лесу,лесу она росла
PS: О q'~...~' можно почитать здесь .
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700951
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.kaнайти словоPol.kaвывести строки http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700955
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та была предпоследняя
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with
  t as (
    select '1 Мама мама мама , мама- мама- ' s from dual
    union all
    select '2 мимо мима мими , мимо-мимо , мимо-мимо.' from dual
    union all
    select '3 Назад вперёд вверх вниз. Вверх вниз' from dual
    union all
    select '4 Семь восемь. Семь семь' from dual
  )
select *
from t
where regexp_like(s,
                  q'~(^|[^[:alpha:]-])
                     ([[:alpha:]]([[:alpha:]]*-)?[[:alpha:]]+)
                     [,.;:?![[:space:]]+\2
                     ([^[:alpha:]-]|$)~',
                  'ix');


S1 Мама мама мама , мама- мама- 2 мимо мима мими , мимо-мимо , мимо-мимо.4 Семь восемь. Семь семь
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700964
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

Боюсь опять не то
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700973
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тогда ловите золотую рыбку сами.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39700975
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.kaБоюсь Глаза разул?
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701141
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

В шаблоне мы ищем это слово , а выводятся именно строки
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701168
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам ваше регулярное выражение надо потестировать.
Можно здесь .
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701213
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.kaElic,

В шаблоне мы ищем это слово , а выводятся именно строкиРаз ты не способен сперва внятно сформулировать вопрос, а потом воспользоваться предложенной удочкой,
то мозгов у тебя маловато.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701325
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic, Я конечно прошу прощение за невнятную формулировку и крайне благодарен за критику , я как раз тестирую на этом сайте но работает не так как надо
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701332
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,
Спасибо , я как раз пользуюсь этим сайтом , но пока безрезультатно
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701342
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.ka,

Попробую всё же перебороть свою проблему и сформулировать нормально.
Есть строки в которых содержится текст , надо вывести те строки в тексте которых есть слово повторяющееся 2 и более раз в пределе одного предложения по правилам русской пунктуации , при чём
слова пять , пять- , -пять , пять-пять , все разные. Шаблоном я пытался как раз найти это слово и произвести поиск по нему.
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701343
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pol.ka,

И пользоваться можно только regex_like
...
Рейтинг: 0 / 0
Регулярные выражения
    #39701350
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,
Спасибо , я как раз пользуюсь этим сайтом , но пока безрезультатно
...
Рейтинг: 0 / 0
Регулярные выражения
    #39702081
Pol.ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

Надеюсь вы ещё тут , все это время у меня было неточная формулировка , слово должно повторятся строго больше 2 раз
...
Рейтинг: 0 / 0
Регулярные выражения
    #39702214
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.
with
  t as (
    select '1 Мама мама мама , мама- мама- ' s from dual
    union all
    select '2 мимо мима мими , мимо-мимо , мимо-мимо.' from dual
    union all
    select '3 Назад вперёд вверх вниз. Вверх вниз' from dual
    union all
    select '4 Семь восемь. Семь семь' from dual
  )
select *
from t
where regexp_like(s,
                  q'~([^[:alpha:]-]|^)
                     (
                       [[:alpha:]]{2,}(-[[:alpha:]]{2,})?|
                       -[[:alpha:]]{2,}|
                       [[:alpha:]]{2,}-
                     )
                     [^[:alpha:]-]
                     ((.*?[^[:alpha:]-])?\2([^[:alpha:]-]|$)){2}~',
                  'ix');


S1 Мама мама мама , мама- мама- 4 Семь восемь. Семь семь
Запрос можно потестировать здесь , а регулярное выражение - здесь .
...
Рейтинг: 0 / 0
Регулярные выражения
    #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
32 сообщений из 32, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярные выражения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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