Как извлечь поле двойных кавычек в регулярных выражениях, которые начинаются с определенной строки - PullRequest
1 голос
/ 29 октября 2019

Я бы хотел извлечь содержимое имени (David) и содержимое URL (www.stackoverflow.com) из следующего файла json.

У меня есть несколько вопросов:

Как извлечь строку, которая начинается с «и заканчивается»?

Как заставить регулярное выражение начинаться с выражения, которое не является частью соответствующего регулярного выражения.

{
   "id" : "1234",
   "name" : "David",
   "request" :  {
       "url" : "www.stackoverflow.com",
       "method" : "POST",
       "bodyPatterns" : [ {
          "matchesXPath" : "example"
    }, {
          "matchesXPath" : "example/123"
    }, {
   "matchesXPath" : {
   "expression" : "example/123/123/text()",
   "equalTo" : "bbbb"
    }
    } ]
   }
}

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Я не рекомендую решать это с помощью регулярного выражения. Такие специальные решения для синтаксического анализа, как правило, подвержены ошибкам, чрезмерно сложны, сложны в расширении и включают вас, когда вы меньше всего этого ожидаете.

Вместо этого я рекомендую использовать правильный анализатор json, в зависимости от языка, который вы используете. использовать. Для простой оболочки jq - хороший выбор. При этом указание пути к свойству становится тривиальным:

cat file.json | jq '.request.url'
1 голос
/ 29 октября 2019

Примечание: правильный синтаксический анализатор является наиболее рекомендуемым способом сделать это в долгосрочной перспективе. Для простой, случайной ситуации может подойти регулярное выражение.


Это регулярное выражение выполняет свою работу:

"name"\s*:\s*"(?'name'[^"]+)".*"url"\s*:\s*"(?'url'[^"]+)"

Тест здесь . Группы name и url содержат ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...