регулярное выражение для получения номера из 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
.
Демо здесь.
Это можно упростить или изменить, зная дополнительные правила.