|
Регулярные выражения. | ☑ | ||
---|---|---|---|---|
0
denmaestro
10.11.12
✎
17:38
|
{"response":[{"aid":125859827,"owner_id":37684707,"url":"http:"},{"aid":125859819,"owner_id":37684707,"url":"http:"},{"aid":125859812,"owner_id":37684707,"duration":425,"url":"http:"},{"aid":124932086,"owner_id":37684707,"Descr":"Описание[1]","url":"http:"},{"aid":117596187,"owner_id":37684707,"url":"http:"},{"aid":79412007,"owner_id":37684707,"duration":325,"url":"http:"}]}
Помогите с Pattern'ом. Хочу получить значения после : и до , пока остановился вот на этом ([^\:,]+) результат выглядит вот так (хотелось получить только значения 3,5,7) 1 : {"response" 2 : [{"aid" 3 : 125859827 4 : "owner_id" 5 : 37684707 6 : "url" 7 : "http 8 : "} 9 : {"aid" 10 : 125859819 11 : "owner_id" 12 : 37684707 13 : "url" 14 : "http 15 : "} |
|||
1
Лефмихалыч
10.11.12
✎
17:42
|
Попробуй
\"\w+\"\:(.*), |
|||
2
zulu_mix
10.11.12
✎
17:48
|
нафига? в многострочную строку через мнстр=стрзаменить(вхстр,Символ(34),символы.пс);
|
|||
3
denmaestro
10.11.12
✎
17:56
|
(1) не взлетело, т.е. срабатывает, только от жадности ничего не выбирает.
(2) из-за производительности |
|||
4
pumbaEO
10.11.12
✎
18:09
|
Если прозводительность нужна, зачем тогда это в 1С делаешь?
https://docs.google.com/open?id=0B0WbnSdKEdjFUXBmbmpYZlQ2ak0 json парсер на 1С. |
|||
5
zulu_mix
10.11.12
✎
18:20
|
(3)ты на самом деле думаешь что 1с распарсит медленнее?
|
|||
6
denmaestro
10.11.12
✎
18:39
|
(5) рассчитываю что - да
|
|||
7
Азазелло
10.11.12
✎
19:29
|
так не подойдет? \":[a-zA-Z0-9\"]+,
|
|||
8
Лефмихалыч
10.11.12
✎
19:30
|
(7) беда, как я понял, в том, что там могут внезапно встретиться и другие символы и единственное, в чем уверен ТС, так это то, что в значениях параметров не может встретиться только запятая
|
|||
9
Азазелло
10.11.12
✎
19:35
|
(8) да, точно, там и ; может быть и []
|
|||
10
Лефмихалыч
10.11.12
✎
19:36
|
(0) автор, а что если в два прохода? Сначала выдрать регэкспом наборы, которые в фигурных скобках, а уже то, что получилось парсить кодом на основе знания типов значений параметров. Ну, то есть, очевидно, что url и Descr - это сроки, а остальное числа. Иначе отсутствие кавычек в числовых значениях порождает заморочки, которые регэкспами трудно обойти
|
|||
11
Азазелло
10.11.12
✎
19:38
|
(10) вроде регэксп позволяет строить условия и / или? или я ошибаюсь?
|
|||
12
Лефмихалыч
10.11.12
✎
19:41
|
(11) зависит от реализации, VBScript.Regexp не позволяет
|
|||
13
Лефмихалыч
10.11.12
✎
19:41
|
+(12) и кстати, он тот еще тормоз
|
|||
14
kokamoonga
11.11.12
✎
00:49
|
(0)
Some people, when confronted with a problem, think "I know, I’ll use regular expressions." Now they have two problems. вывод: юзай готовые решения. (4) например и куча других уже есть. велосипед с квадратными колесами всегда хуже велосипеда с круглыми. |
|||
15
Torquader
11.11.12
✎
00:57
|
С REgExp очень тяжело работать, если используются кавычки для простановки исключений. Насколько я понимаю, формат параметров следующий:
Наименование:Значение и запятая - разделитель. При этом, наименование и значение, если строки, то заключаются в кавычки. Самый интересный вопрос - а не может ли в значениях встретится сам вариант Наименование:Значение. Если это встречается, то вся система RegExp-ов летит к шутам, так как она не умеет оценивать уровни вложенности. Итог - писать парсер - тот же VbScript с функцией InStr, позволяющей искать символ с определённой позиции позволяет написать разборщик, который не сильно будет уступать в скорость проверке RegExp, а уровни вложенности проглотит все. Кстати, а как передаются значение параметра, если оно строка с кавычками ? |
|||
16
sttt
11.11.12
✎
01:31
|
для себя выбрал обработку внешними поделками, их достаточно много реализовано и с исходниками. взять тот же кроссплатформенный php...
|
|||
17
sttt
11.11.12
✎
01:32
|
(16) + и побыстрее vbscript будет
|
|||
18
sttt
11.11.12
✎
01:39
|
а лучше на perl сделать
|
|||
19
orefkov
11.11.12
✎
03:02
|
(15)
Судя по внешнему виду, это обычный JSON. Так что можно либо (4), либо msscriptcontrol + jscript + eval. |
|||
20
denmaestro
12.11.12
✎
20:50
|
Спасибо, за советы и помощь! Режил отложить регуляры на потом - обошелся стрзаменить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |