|
|
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Добрый день, знатоки Помогите плз с патерном для регулярки, обработка строки типа: 12 0 01\01\2004 31\12\2054 ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ 0 0.00 0 0 1 21 0 16\09\2008 31\12\2054 МIН.РОЗМIР ПЕНСIп (ШАХТ.-80% ЗАРПЛАТИ) 0 0.00 0 0 1 111 3 01\01\2008 31\12\2011 ДОД. ПЕHСIЯ IHВ. 1 ГР. ВНАСЛ. ЧК (СТ.49) 14 30.00 1 1 1 112 1 01\07\2012 31\12\2054 ДОД. ПЕHСIЯ IHВ. 2 ГР. ВНАСЛ. ЧК ПОТЕРПIЛI (СТ.49 14 24.00 0 1 1 пошел следующим путем: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. но на тексте запоролся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 17:52:44 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanно на тексте запоролся Код: plsql 1. плюс якоря с самых краёв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 18:38:53 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
парсинг по следующему примеру: 12 0 01\01\2004 31\12\2054 ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ 0 0.00 0 0 1 цветом выделил значения которые нужно получить со строки (так вроде наглядней) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 18:43:04 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Elic, с якорями не получится, строка заканчивается символом chr(13), плюс мне нужно получить значения, которые выделил цветом через подвыражения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 18:51:02 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. l-freemanмне нужно получить значения, которые выделил цветом через подвыраженияВ чём проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 18:56:45 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Elic, моя строка имеет вид: Код: plsql 1. 2. 3. 4. если я заякорю на конец строки (на '$'), плюс те патерны которые недокодил, то получу вот это выражение 112 1 01\07\2012 31\12\2054 ДОД. ПЕHСIЯ IHВ. 2 ГР. ВНАСЛ. ЧК ПОТЕРПIЛI (СТ.49 14 24.00 0 1 1 моя задача состоит в следующем: необходимо все значения с первого абзаца(или строки до первого chr(13)): {12} {0} {01\01\2004} {31\12\2054} {ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ} {0} {0.00} {0} {0} {1} распихнуть в переменные и заинсертить в таблицу, затем перейти ко второму абзацу(второе вхождение chr(13)): {21} {0} {16\09\2008} {31\12\2054} {МIН.РОЗМIР ПЕНСIп (ШАХТ.-80% ЗАРПЛАТИ)} {0} {0.00} {0} {0} {1} и сделать то же самое. В переменные хотел распихать через subexpression => 1(затем 2,3...). Опять же без патерна для текста - сделать этого не получится хотел сделать это через регулярку, циклом на параметр occurrence (если будет долго работать, то пройтись по строке и разбить на подстроки по chr(13)); проблема в том, что я не могу выбрать текст со строки, т.е. "ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ" до первого chr(13); "МIН.РОЗМIР ПЕНСIп (ШАХТ.-80% ЗАРПЛАТИ)" до второго chr(13) и т.д вот потому и прошу помочь матерого регулярщика с патерном на текст(при том что в тексте есть как цифры, так и не буквенные символы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 22:54:31 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. вот только подвыражения кривые получаются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 00:55:47 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
опечатался, до цикла Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 00:59:48 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanто пройтись по строке и разбить на подстроки по chr(13));Когда ни хера не понимаешь, лучше именно декомпозировать задачу на более простейшие. Вот если и простейшая задача не выйдет, тогда и спрашивай лаконично, без соплей и тонн говнокода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 09:40:17 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Elic, Что именно говняное в коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 10:39:48 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanЧто именно говняное в коде?Ты не можешь сжато изложить свою проблему? И вместо этого хочешь поспорить о говнокодистости? - Оно тебе надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 10:45:26 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Elic, не в коем случае не хочу поспорить, хочу научится не писать говнокода больше просто не понимаю в чем именно наговнил не знаю как получить со стоки, к примеру: {12} {0} {01\01\2004} {31\12\2054} {ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ} {0} {0.00} {0} {0} {1} подвыражения, которые мною выделенные скобками, затем то же самое получить со строки: {21} {0} {16\09\2008} {31\12\2054} {МIН.РОЗМIР ПЕНСIп (ШАХТ.-80% ЗАРПЛАТИ)} {0} {12.05} {0} {0} {1} и так далее для тысяч различных строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 11:03:36 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freeman, В этот раз у Elic' а просто ангельское терпение. Да и ты, вроде, в бутылку не лезешь. Повторю, пожалуй, основные мысли, может поможет: - распарси сначала только одну строку - паттерн начни с ^, закончи $. этим ты привяжешь первые поля к началу, а последние - к концу строки. - всё остально (текст в твоей интерпретации) - .+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 11:18:54 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanпарсинг по следующему примеру: 12 0 01\01\2004 31\12\2054 ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ 0 0.00 0 0 1 цветом выделил значения которые нужно получить со строки (так вроде наглядней)Регулярки не стоит усложнять без надобности. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 13:41:18 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopl-freemanпарсинг по следующему примеру: 12 0 01\01\2004 31\12\2054 ОСНОВНА ПЕНСIЯ З ОБМЕЖЕННЯМ ВИПЛАТИ 0 0.00 0 0 1 цветом выделил значения которые нужно получить со строки (так вроде наглядней) Регулярки не стоит усложнять без надобности. А ты уверен ему нужно то что синим? Он раскрасил всё, и заявил что нужные значения выделены цветом - по eго мнению так наглядней . SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 14:01:18 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, спасибо огромное, патерны более элегантны, но вот только вопрос, почему для 10 подвыражения значение - null? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 14:15:36 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanпочему для 10 подвыражения значение - null?"Я считаю до пятидевяти, не могу до десяти!" :) 10.2: regexp_replace и 10-ый backreference ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 14:31:01 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemanспасибо огромное, патерны более элегантны, но вот только вопрос, почему для 10 подвыражения значение - null?Перед тем как спросить на форуме всегда имеет смысл сначала заглянуть в доку. http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions150.htm For a pattern with subexpressions, subexpr is a nonnegative integer from 0 to 9 indicating which subexpression in pattern is to be returned by the function. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 14:34:03 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
l-freemandbms_photoshop, спасибо огромное, патерны более элегантны, но вот только вопрос, почему для 10 подвыражения значение - null? Потому-как решeние нерабочее. Параметр subexpr в regexp_substr это не что иное как backreference, а их всего 10 (0 - 9): For a pattern with subexpressions, subexpr is a nonnegative integer from 0 to 9 indicating which subexpression in pattern is to be returned by the function. This parameter has the same semantics that it has for the REGEXP_INSTR function. Refer to REGEXP_INSTR for more information. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 14:34:51 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 15:14:15 |
|
||
|
Паттерн для регулярки
|
|||
|---|---|---|---|
|
#18+
Всем спасибо остановлюсь на: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2016, 16:06:08 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39254585&tid=1888106]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
219ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 542ms |

| 0 / 0 |
