регулярное выражение для получения номера из json

Как получить текстовый вывод требуемого формата из полезной нагрузки json с помощью регулярного выражения

"number" : 4aac4c35-8e3e-4730-8364-381884d6f20f:OP:QUAL:117804471:PON:false

какое выражение для вывода, как показано ниже

"number" : 117804471

не могли бы вы помочь.

Я пробовал следующее: но это не сработало; Я новичок в этом.

([\"]token[\"][\s]*:[\s]*)?([0-9]{9})

2 ответа

Да, как говорит @PJProudhon, нам не хватает некоторых уточнений, чтобы помочь вам.

Если вы просто хотите извлечь число без использования некоторых групп захвата, вы можете использовать это регулярное выражение: (?<=:)\d+(?=:\w+:(?:true|false))

Быстрое объяснение:

  • (?<=:) положительный взгляд назад, чтобы найти : char.
  • \d+ состоит в том, чтобы получить число не менее 1 десятичного знака.
  • (?=:\w+:(?:true|false)) положительный взгляд в будущее, чтобы найти :, слово, : а потом true или false.

Небольшой тест с несколькими значениями здесь: https://regex101.com/r/1nRnct/2

Надеюсь, это поможет тебе.

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

Получение некоторой строки, уважающей следующее:

  • Начиная с токена, заключенного в двойные кавычки.
  • За ним следует двоеточие, иногда окруженное любым количеством пробелов.
  • В правой части идет набор разделенных двоеточием жетонов.
  • Один из них состоит только из чисел.

Попытка заменить этот ввод только:

  • Заключенный в двойные кавычки токен.
  • Далее следует двоеточие с сохранением окруженных пробелов.
  • Сразу же следует номер только токена.

Затем вы можете использовать следующий шаблон, чтобы найти совпадение: ^(?<token>"[^"]+"\s*:\s*)(?:\d*[^\d:][^:]*:)*(?<number>\d+)(?::[^:]*)*$.

Затем для замены следует использовать следующее: $1$2.

Демо здесь.

Это можно упростить или изменить, зная дополнительные правила.

Другие вопросы по тегам