Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как через regex найти все слова по формату E***A** / 25 сообщений из 28, страница 1 из 2
17.08.2018, 13:54
    #39689477
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
Подскажите, как через regex найти все слова по формату E***A**
E - всегда первая
A - может находится на любой позиции
...
Рейтинг: 0 / 0
17.08.2018, 13:59
    #39689480
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstuПодскажите, как через regex найти все слова по формату E***A**
E - всегда первая
A - может находится на любой позицииВ чём проблема? Ровно 7 букв?
...
Рейтинг: 0 / 0
17.08.2018, 14:03
    #39689484
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstuсловаБольшой толковый словарь 1. СЛОВО , -а; мн. слова, слов, -ам и (устар.). словеса, словес, -ам; ср.
1. Единица языка, служащая для называния отдельного понятия.
2. только ед. Речь, язык. Культура слова.
...
10. ....
2. СЛОВО , -а; ср. Устарелое название буквы "с".
...
Рейтинг: 0 / 0
17.08.2018, 14:05
    #39689486
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
Elicx17.mstuПодскажите, как через regex найти все слова по формату E***A**
E - всегда первая
A - может находится на любой позицииВ чём проблема? Ровно 7 букв?Как в чем проблема?
Накидайте решений, а я выберу самое мне нравещяеся
...
Рейтинг: 0 / 0
17.08.2018, 14:08
    #39689489
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
Использую редко.
Почитал доку минут 10.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
 SELECT str, REGEXP_INSTR(str, '^A[^\s]f[^\s]') regexp_instr1
 FROM (
       select 'AdfgBg 1' str from dual union all
       select 'ABffS2' str from dual union all
       select 'A444BS3' str from dual union all
       select 'ABDRFTW' str from dual
      );
...
Рейтинг: 0 / 0
17.08.2018, 14:15
    #39689497
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
dmdmdmПочитал доку минут 10.Увидел фигу.
...
Рейтинг: 0 / 0
17.08.2018, 14:49
    #39689513
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
-2-,

любое
...
Рейтинг: 0 / 0
18.08.2018, 10:53
    #39689738
MirnyiAtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
Код: plsql
1.
REGEXP_LIKE(str, 'E.{0,6}A')
...
Рейтинг: 0 / 0
18.08.2018, 11:02
    #39689741
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
...
Рейтинг: 0 / 0
19.08.2018, 08:27
    #39689880
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
MirnyiAtom
Код: plsql
1.
REGEXP_LIKE(str, 'E.{0,6}A')

Не позорься своим невежеством.
...
Рейтинг: 0 / 0
20.08.2018, 09:19
    #39690198
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstu,

...
Рейтинг: 0 / 0
20.08.2018, 10:23
    #39690257
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstu,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with t as (select 'EFG HDA' val from dual
UNION ALL
select 'EFGHDAWA' val from dual
UNION ALL
select 'EFG1DWA' val from dual
UNION ALL
select 'EFGHDWS' val from dual
UNION ALL
select 'FGHDWEA' val from dual
UNION ALL
select 'EAFG_DW' val from dual)
--если длина не ограничена
select * from t where regexp_like (val,'^E(\w)*?A')
union all
select '----------------' from dual
union all
--если 7 букв ровно
select * from t where regexp_like (val,'(^EA(\w){5}$)|(^E(\w)A(\w){4}$)|(^E(\w){2}A(\w){3}$)|(^E(\w){3}A(\w){2}$)|(^E(\w){4}A(\w)$)|(^E(\w){5}A$)')
--Если нужны искать только буквы вместо \w используй [:alpha:]
...
Рейтинг: 0 / 0
20.08.2018, 11:02
    #39690287
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
feagor
Код: plsql
1.
2.
--если 7 букв ровно
select * from t where regexp_like (val,'(^EA(\w){5}$)|(^E(\w)A(\w){4}$)|(^E(\w){2}A(\w){3}$)|(^E(\w){3}A(\w){2}$)|(^E(\w){4}A(\w)$)|(^E(\w){5}A$)')[:alpha:]

Ой-ё, шире вселенной горе мое.
...
Рейтинг: 0 / 0
20.08.2018, 14:54
    #39690455
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
feagor,

Ну что ты уперся в реализацию одним условием?

Код: plsql
1.
WHERE LENGTH(REGEXP_SUBSTR('(^|\W)(E\w*A\w*)',1,1,null,2)) = 7 -- \W заменить на \s по обстоятельствам



Ну и потом "найти все слова" предполагают размножение строки.

SY.
...
Рейтинг: 0 / 0
20.08.2018, 15:58
    #39690510
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstuПодскажите, как через regex найти все слова по формату E***A**
E - всегда первая
A - может находится на любой позиции

Что-то я не понял, почему Вы все такие страшные регулярки приводите?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH 
  TMain AS (SELECT 'E123A121' str FROM DUAL UNION ALL
            SELECT 'E1A123'   str FROM DUAL UNION ALL
            SELECT 'EA123'    str FROM DUAL UNION ALL
            SELECT 'EA'       str FROM DUAL UNION ALL
            SELECT '12EA'     str FROM DUAL)
SELECT *
FROM TMain
WHERE regexp_like(str, '^E.*A.*$')
...
Рейтинг: 0 / 0
20.08.2018, 21:22
    #39690709
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
сначала надо бы сабстрингом чекнуть, он побыстрее регекспа
Код: plsql
1.
2.
CASE WHEN substr(col, 0, 1) = 'E' THEN
    CASE WHEN regexp_like(...) THEN ...
...
Рейтинг: 0 / 0
20.08.2018, 22:43
    #39690729
celestial
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
x17.mstu,

авторПодскажите, как через regex найти все слова по формату E***A**
E - всегда первая
A - может находится на любой позиции

Это перловка, переделайте в формат sql
я еще не дошел до этой темы. только начал изучать plsql, но вроде как то так,
автор^E[^AE]+?A[^AE]+
если в SQL есть библиотека PCRE перлосовместимые регэкспы.

авторecho -e "ElkimatAlki\nEA\nEmAe\nAE\nae\natestE\nAtestEsitis\nEsitisAAe" | perl -ne 'print if /^E[^AE]+?A[^AE]+/'
ElkimatAlki
EmAe
EsitisAe
...
Рейтинг: 0 / 0
20.08.2018, 23:21
    #39690738
celestial
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
IMNO,

авторregexp_like(str, '^E.*A.*$')
в Вашем случае найдутся и такие слова
EEEAAA
EabcEdxzEAAA
EzzzAAzEA
...
Рейтинг: 0 / 0
20.08.2018, 23:37
    #39690739
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
celestial, не скажу, что листал внимательно, но ничего про количество вхождений не вижу.

Вдруг в
x17.mstu E***A**


под звездочками скрываются тоже E и A...
...
Рейтинг: 0 / 0
21.08.2018, 00:03
    #39690743
celestial
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
merch,

авторне скажу, что листал внимательно, но ничего про количество вхождений не вижу.

согласен. задача немного размытая
...
Рейтинг: 0 / 0
21.08.2018, 11:11
    #39690885
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
celestialавторregexp_like(str, '^E.*A.*$')
в Вашем случае найдутся и такие слова У него вообще понятие слова теряется.
...
Рейтинг: 0 / 0
21.08.2018, 11:12
    #39690886
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
celestialIMNO,

авторregexp_like(str, '^E.*A.*$')
в Вашем случае найдутся и такие слова
EEEAAA
EabcEdxzEAAA
EzzzAAzEA

Что я делаю не так?

Код: 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.
SQL> WITH
  2    TMain AS (SELECT 'E123A121'     str FROM DUAL UNION ALL
  3              SELECT 'E1A123'       str FROM DUAL UNION ALL
  4              SELECT 'EA123'        str FROM DUAL UNION ALL
  5              SELECT 'EA'           str FROM DUAL UNION ALL
  6              SELECT 'EEEAAA'       str FROM DUAL UNION ALL
  7              SELECT 'EabcEdxzEAAA' str FROM DUAL UNION ALL
  8              SELECT 'EzzzAAzEA'    str FROM DUAL UNION ALL
  9              SELECT '12EA'         str FROM DUAL)
 10  SELECT *
 11  FROM TMain
 12  WHERE regexp_like(str, '^E.*A.*$');

STR
------------
E123A121
E1A123
EA123
EA
EEEAAA
EabcEdxzEAAA
EzzzAAzEA

7 rows selected.

SQL>
...
Рейтинг: 0 / 0
21.08.2018, 13:23
    #39691002
celestial
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
IMNO,

подтверждаете мои слова :)
...
Рейтинг: 0 / 0
21.08.2018, 13:26
    #39691011
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
IMNOЧто я делаю не так?
как будет "слово" во множественном числе ?
...
Рейтинг: 0 / 0
21.08.2018, 13:57
    #39691059
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как через regex найти все слова по формату E***A**
celestialIMNO,

подтверждаете мои слова :)

Ой. Прощу прощения. Я прочитал как "в Вашем случае НЕ найдутся и такие слова"

Как уже писал merch, у автора темы не написано, что под звёздочками НЕ могут скрываться символы "E" и "A".



123ййIMNOЧто я делаю не так?
как будет "слово" во множественном числе ?
Что-то я не понимаю. В чём претензия?


AmKadУ него вообще понятие слова теряется.
Как я понимаю задачу автора темы.
Есть один столбец со словами. И например 100 строк.
Нужно выбрать те строки, которые соответствуют шаблону E***A**.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как через regex найти все слова по формату E***A** / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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