|
|
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Помогите знающие люди с регулярными выражениями. 1) Есть файл с данными типа \Z0001#1.8.0(04468.197*kWh) \Z0001#1.8.0*10(04449.596*kWh)____________повтор индекса \Z0001#1.8.0*09(04395.260*kWh) \Z0001#1.8.0*08(04344.854*kWh) \Z0001#1.8.0*10(03718.676*kWh)____________повтор индекса \Z0001#1.8.0*09(03624.595*kWh) \Z0001#1.8.0*08(03553.404*kWh) В идеале мне нужно выбрать только значение (цифры до *kWh). В принципе все получилось, но вот столкнулся с двойственностью кодов ( например \Z0001#1.8.0* 10 ). В итоге я получаю строку типа 04449.59603718.676 Можно как то этому помочь? 2) Я использую несколько pattern. Первый pattern="1.8.0\*10(.*?)\)". Получаю \Z0001#1.8.0*10(04449.596*kWh)\Z0001#1.8.0*10(03718.676*kWh) Как можно указать, чтобы останавливался на первом вхождении. Этого будет достаточно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 17:26 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
Вы делаете кодом, или формулами ? Расскажите подробней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 17:50 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
А теперь еще раз. Покажи пример настоящих данных. А то в первом примере у тебя данные по строкам, а во втором несколько строк слиты в одну. Покажи пример текста и скажи что именно надо из него вытащить. Nevsky2006В идеале мне нужно выбрать только значение (цифры до *kWh). В принципе все получилось, но вот столкнулся с двойственностью кодов ( например \Z0001#1.8.0* 10 ). В итоге я получаю строку типа 04449.59603718.676 Можно как то этому помочь?Я не вижу тут никакой двойственности. чтобы из строки \Z0001#1.8.0*10(04449.596*kWh) вытащить 04449.596 достаточно прогнать ее через: Код: plaintext 1. Nevsky20062) Я использую несколько pattern. Первый pattern="1.8.0\*10(.*?)\)". Получаю \Z0001#1.8.0*10(04449.596*kWh)\Z0001#1.8.0*10(03718.676*kWh) Как можно указать, чтобы останавливался на первом вхождении. Этого будет достаточно. Спасибо.Заканчивать шаблон комбинацией ".*?" это хорошо.... Это значит "читать чуть-чуть, отсюда и до бесконечности". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2009, 18:27 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
Если просто формулой? =ПСТР(A1;НАЙТИ("(";A1)+1;НАЙТИ(")";A1)-НАЙТИ("(";A1)-5) С преобразованием в число: =ПОДСТАВИТЬ(ПСТР(...);".";",")*1 Пример в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2009, 01:36 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Особенно White Owl. submatches - очень помогло. Несколько раз переписывал ответ. Пока письменно пытаюсь объяснить, что мне надо, как самому доходит. :) Но есть некоторые моменты "недошедшие". Делаю в коде. Есть файлы (см вложение). Их много. В файлах существуют определенные коды (OBIS), могут быть записаны в любой последовательности, любое количество. Но коды не меняются (1.8.0; 2.8.0; 3.8.1 и т.д. и т.п.) К чему я стремлюсь - Мне нужно согласно списка указанных кодов созданного (программой|пользователем) вытащить значения из файла. Впринципе почти получилось: загружаю файл в переменную - ищу код (вместе со значением)- вытаскиваю значение. Для разных групп кодов использую разные шаблоны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2009, 18:53 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
А конкретно вопрос. Приходят в функцию по очереди две строчки Код: plaintext Код: plaintext Как видно код один и тот же 1.8.0. *08 - индекс, может быть какой угодно, но только 01-99. Как бы сказать что разрядность *kWh может быть. а может и нет. (kWh - не константа) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2009, 18:59 |
|
||
|
Регулярные выражения
|
|||
|---|---|---|---|
|
#18+
Nevsky2006А конкретно вопрос. Приходят в функцию по очереди две строчки Код: plaintext Код: plaintext Как видно код один и тот же 1.8.0. *08 - индекс, может быть какой угодно, но только 01-99. Как бы сказать что разрядность *kWh может быть. а может и нет. (kWh - не константа)Что такое "значение"? Цифра в скобках перед буквами? Тогда можно попробовать такое: Код: plaintext Работая с регулярками в первую очередь задай себе вопрос: "что я ищу глазами в этих строках?" Чем точнее ты сможешь ответить на этот вопрос, тем больше шансов написать работающий шаблон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2009, 23:13 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36346926&tid=2178752]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 334ms |

| 0 / 0 |
