1

Тема: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Делаю запрос к вк и получаю ответ JSON формата. Пример - https://vk.com/dev/wall.get?params[owner_id]=-134831881&params[count]=100&params[filter]=owner&params[extended]=0&params[v]=5.74 (копируем руками, форум не воспринимает такие ссылки)
Мне нужно вырезать всё содержимое, которое внутри пунктов "attachments" и "copy_history".
У меня выходит полный ужас, как только не пробовал.
Кому не сложно, покажите или помогите это осуществить.

2

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Ваша ссылка у меня возвращает html-код страницы, вот этой. Напишите, как посылаете запрос, чтоб получить JSON, либо просто приведите сам JSON.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: sememix, 2018-04-19 21:57:14)

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

teadrinker,

https://api.vk.com/method/wall.get?owner_id= %GroupID% &count=100&filter=owner&extended=1&access_token= %token% &v=5.74

4

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

У меня нету GroupID и token, я разработкой под VK не занимаюсь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

sememix пишет:

Мне нужно вырезать всё содержимое, которое внутри пунктов "attachments" и "copy_history".

Там их много, нужно все обрабатывать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Суть в том, чтобы это можно было на любой странице, ибо всегда ответ разный. Т. е. от"attachments: [", до своей "]". Это возможно сделать, но у меня трудности возникли в том, что там внутри несколько скобочек типа "[" "]".

7

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Так там много ключей attachments, какой из них нужно обрабатывать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

teadrinker, все. Их содержимое надо удалить. Ибо они сильно мешают при дальнейшей обработке.

9 (изменено: teadrinker, 2018-04-19 23:15:57)

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Пример:

text = {"key":value,"attachments":[{key: value, key2:[1, 2, 3]}, {key: value, key2:[1, 2, 3]}],"array":[1,2,3,4],"copy_history":[{key: value, key2:[1, 2]}, {key: value, key2:[1, 2]}]}

RegExMatch(text, "x)""attachments"":( \[ (?: [^\[\]]++ | (?-1) )* \] )", match)
MsgBox, % match1

RegExMatch(text, "x)""copy_history"":( \[ (?: [^\[\]]++ | (?-1) )* \] )", match)
MsgBox, % match1
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

Или так:

text = {"key":value,"attachments":[{key: value, key2:[1, 2, 3]}, {key: value, key2:[1, 2, 3]}],"array":[1,2,3,4],"copy_history":[{key: value, key2:[1, 2]}, {key: value, key2:[1, 2]}]}
MsgBox, % RegExReplace(text, "x)""(?:attachments|copy_history)"":(\[ (?: [^\[\]]++ | (?-1) )* \])")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: sememix, 2018-04-20 13:29:12)

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

teadrinker, проверил, вообще не работает, оно удаляет абсолютно всё, при работе с огромным текстом и сами значения attachments и copy_histori надо оставить на своём месте.
P. S. ответ JSON приходит в одну строку без пробелов.

12

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

teadrinker, вот пример возврата - http://rgho.st/private/6s4YdLwV2/405d7d … 2858608aee

13

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

sememix, у вас после "attachments" идет "post_source".
От него и пляшите.

14

Re: AHK: Вырезка лишнего текста при помощи регулярных выражений.

sememix пишет:

сами значения attachments и copy_histori надо оставить на своём месте.

sememix пишет:

teadrinker, вот пример возврата - http://rgho.st/private/6s4YdLwV2/405d7d … 2858608aee

У меня так работает:

FileRead, text, D:\Downloads\123.txt
newText := RegExReplace(text, "x)""(attachments|copy_history)"":\K(\[ (?: [^\[\]]++ | (?-1) )* \])")
FileAppend, % newText, %A_Desktop%\123.txt
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder