|
|
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
Приветствую. Есть задача: выделить из фраз одинаковые, стоящие рядом слова. Код: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Результат: re re rere rere rerere rerere re re rererere rererere re re re re rere rere rerere rerere re re rererere rererere re re Кулон лон слон слон слон Книга книга слон слон Книга книга Мама мыла раму раму мыла мама раму раму Все пучком. НО! Для фразы "ere re rere rere rerere rerere re re rererere rererere re re" такой результат: re re rere rere re re rererere rererere re re А должно вернуть: rere rere rerere rerere re re rererere rererere re re Прошерстил местные топики: http://www.sql.ru/forum/709654/regulyarnye-vyrazheniya http://www.sql.ru/forum/1019130/zadachi-na-regulyarnye-vyrazheniya Все предлагаемые в них варианты допускают ту же ошибку. Т.е. если во фразе есть одно непарное слово, все слетает. Косяк явно в регулярке. Прошу помочь разобраться, ибо сил уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 17:31 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 17:44 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, это удаление дубликатов из строки. А мне нужно делать выборку повторяющихся, стоящих рядом слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 18:20 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShuk, Я думал если знать как удалить дубликаты, то можно догадаться как удалить все НЕ дубликаты или как "выделить" дубликаты. PS. Разбиение + distinct - тот еще говнокод. Нормальный разработчик при наличии повторяющихся строк пытается избавиться от причины а не следствия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 18:30 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, во-первых, я студент, а во-вторых, так задача поставлена преподом. Поясните, хотя бы минимально, каким образом переписать это Код: plsql 1. 2. чтобы удалить НЕ дубликаты из строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 18:38 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShukя студентКакая разница. Хоть ты школьник на уроке информатики. Если код после выполнения возвращает не то, что ожидается, то нормальный подход это искать причину и исправлять, а говнокод - это вставлять костыль (в твоем случае distinct), чтоб из неправильного результата получить правильный (убрать дубли в твоем случае). GetShukзадача поставлена преподом. Поясните, хотя бы минимально, каким образом переписать это Код: plsql 1. 2. чтобы удалить НЕ дубликаты из строки.А почему ты не задаешь уточняющие вопросы преподу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 19:27 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShuk, В лоб Код: plsql 1. 2. 3. 4. 5. 6. Вполне вероятно можно изящнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 19:29 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
Упс, написал для противоположной задачи. Ладно, помогу минимально. Изучи что означают "\цифра". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 19:35 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, 1) препод принципиальный - никаких подсказок 2) это обратные ссылки на выражение в скобках. Но в строке на замену в regexp_replace они ставят в тупик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 19:39 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, не совсем понял, каким образом происходит удаление дубликата при такой регулярке. По факту '(^|;)([^;]+)(;;\2)+(;|$)' просто описывает структуру анализируемой "фразы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 20:07 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShuk, В третьей паре скобок ссылка на вторую пару скобок для этого примера, при этом после третьей пары скобок стоит +. Это значит что если произошел матч, то значения во второй и третье паре скобок одинакове или иными словами - дубль. Трюкачества с заменой одинарного разделителя на двойной - это чтоб правильно обработать случаи когда одно слово является частью другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 20:20 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, это понял. Но как написать обратную задачу пока хз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 20:26 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, пол логике нужно отрицание сделать и все. Но как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 20:28 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
Может так? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 23:27 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
coborhc, "inconsistent datatypes: expected %s got %s" И коллекции использовать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 23:56 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
coborhc, результат выполнения этого скрипта покажите. пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 23:58 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
У меня еще был такой вариант: Код: 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. Здесь идет корректное разбиение на слова по уровням, только не понял как в итоге в финальном селекте организовать сравнение слов по этим уровням по принципу 1лвл-2лвл, 2-3, 3-4 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 00:11 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
Если без коллекции: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. и еще непонятно, в качестве результата что должно получиться? если совпала пара - то оба слова, или достаточно одного из пары? а если это слово в тексте образует более одной пары (как "re")? или если подряд 3 одинаковых слова (как "слон")? я конечно видел результат исходного запроса, но мне не понятно - так сделано, потому что так требуется или просто иначе не получилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 00:54 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShukУ меня еще был такой вариант: Код: plsql 1. Я поначалу тебя попытался направить в нужное русло поскольку ты показал, что воспользовался поиском, поэтому была надежда, что не полный лентяй. Но по поводу distinct ты либо упорно не хочешь слушать либо совершенно не доходит. Короче если без разбиения строки на слова, то как-то так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. А если с разбиением, то тебе сначала надо будет разбить, а потом применить логику для start_of_group. И то и другое есть на форуме если поискать, но я не вижу смысла разбивать когда этого можно не делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:06 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
coborhc, требуется именно так, как в 1 посте указано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:06 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, именно, что не доходит. С этой задачей уже не 1ый день сижу. Без разбиения совсем было не понятно, как делать. Что означает # в регулярках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:14 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShukЧто означает # в регулярках?Просто маркер для разбиения на группы одинаковых слов. Потом в первом случае из строки вырезаются группы с более чем одним словом. Во втором случае вырезаются группы состоящие в точности из одного слова (соответственно остаются дубли). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:19 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, спасибо, буду разбирать. P.S. Не все люди ленивые идиоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:22 |
|
||
|
Выделение повторяющихся слов через иерархию и регулярки
|
|||
|---|---|---|---|
|
#18+
GetShuk, Я в тебя верю. Удачи! У меня приступ доброты, поэтому держи с разбиением и склейкой Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:36 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1885770]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 2030ms |
| total: | 2290ms |

| 0 / 0 |
