Я пытаюсь проверить ответы JSON на вызовы веб-службы.
Всего существует 13 переменных, которые могут или не могут быть возвращены в таком отображении:
{"var1":"val1","var2":"val2","var3":"val3", ... "var13":"val13"}
Самый длинный ответ может иметь все тринадцать переменных, но типичный ответ больше похож на этот:
{"var4":"val4","var6":"val6","var10","val10"}
Мне нужно написать регулярное выражение, которое может захватывать значения, чтобы их можно было установить для отдельных переменныхв принимающей системе.
Необязательные группы без захвата, необязательные группы захвата, что делает каждый символ необязательным
Если в каждом ответе API присутствуют все 13 переменных, следующее регулярное выражение будет работать идеально:
\{"var1":"?(.*?)"?,"var2":"?(.*?)"?,"var3":"?(.*?)"?,"var4":"?(.*?)"?,"var5":"?(.*?)"?,"var6":"?(.*?)"?,"var7":"?(.*?)"?,"var8":"?(.*?)"?,"var9":"?(.*?)"?,"var10":"?(.*?)"?,"var11":"?(.*?)"?,"var12":"?(.*?)"?,"var13":"?(.*?)"?\}
Я перепробовал множество различных комбинаций, например, оборачивание переменных в необязательные группы без захвата, например:
\{(:?"var1":)?"?(.*?)"?,? ... \}
И создание самой группы захвата также необязательно:
\{(:?"var1":)?"?(.*?)?"?,? ... \}
Весь способ сделать каждый символ необязательным:
\{"?v?a?r?1?"?:?"?(.*?)?"?,? ... \}
Как мне решить эту проблему?