Regex extract Json имя атрибута - PullRequest
1 голос
/ 17 марта 2020

Я ищу для извлечения всех атрибутов имени строки Json. Я вышел с выражением, но оно не работает для некоторых конкретных c сценариев. Я создаю следующее выражение:

"([a-zA-Z0-9-]*)"(?::\s(?:"[a-zA-Z0-9-\s:]*")|(?:\s^null$)|(?:\s[0-9]+,))

И оно отлично работает для таких атрибутов, как эти:

{"dataAreaId": "cel",    "CustomerAccount": "C101112",    "AddressBrazilianCNPJOrCPF": "",    "PartyType": "Organization"}

Но он действительно извлекает / сопоставляет атрибут для них:

{ "DeliveryAddressLongitude": 0,"AddressTimeZone": null,"FullPrimaryAddress": "7800 Avenue Aurtweuil Suite 28841\nBrossard QC J2Z 3P1\nCanada"}

Я буду очень признателен, если у меня возникнут какие-либо рекомендации по этому поводу.

Приветствия

VINCENT

1 Ответ

1 голос
/ 17 марта 2020

При сгенерированном json вам нужно будет соответствовать только слову, предшествующему двоеточию, верно, при учете кавычек? Например:

/("?)(\b\w+\b)\1:/gm

Edit:

  • /.../gm: g и m - это флаги, которые изменяют поведение выражения, где g (global) означает попытаться найти все совпадения в строке , а m (многострочный) означает сделать каждую строку в строке привязываемой с помощью ^ и $; вам на самом деле здесь не нужен флаг m, это было упущением с моей стороны. В зависимости от вида регулярного выражения вы будете использовать флаги, как показано выше - после второго разделителя выражений, в качестве параметров для функций сопоставления или в качестве модификаторов в выражении, таких как (?g). Я просто нахожу /.../flags хорошим сочетанием клавиш для отображения выражения с флагами.
  • \b - это граница слова, которая привязывает последовательность символов слова, гарантируя, что с обеих сторон не может быть слова. этого; если есть, выражение не будет совпадать. В этом выражении я просто использую его для того, чтобы двигатель немного быстрее сбивал плохие строки, учитывая при этом необязательный ". Они не нужны строго для этого выражения, когда вы используете его только на правильно сформированном JSON.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...