Имя: Пароль:
IT
 
Регулярные выражения.
,
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
Спасибо, за советы и помощь! Режил отложить регуляры на потом - обошелся стрзаменить.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан