Regex - извлекает номера телефонов из строки - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно извлечь два телефонных номера из строки с разделителями (тильда).Сложность в том, что формат телефонных номеров может варьироваться.

Шаблон строки остается прежним.Но форматирование телефонных номеров может быть одного из трех типов:

(1)  4 digit extensions. (ex. 1001)
(2) 10 digit (5551112222)
(3) 10 digit with country code (+15558889999)

. Мне нужен добавочный номер или 10-значный номер с удаленным кодом страны +1.Итак,

(1) 1001 = 1001
(2) 5551112222 = 5551112222
(3) +15558889999 = 5558889999

Пример строки

2019/02/06/2019-02-06T084903~call~5551112222~+15558889999~231a6a62-c1c8-43a8-ac2e-f8428237385c.WAV

Из приведенной выше строки мне нужно извлечь два телефонных номера с правильным 10-значным форматированием

(1) 5551112222
(2) 5558889999

Пока чтоУ меня есть следующее выражение регулярного выражения:

(?<=\~)(.*?)(?=\~)

Это дает мне три группы

(1) Call
(2) 5551112222
(3) +15558889999

Но мне нужны две группы с правильным форматированием

(1) 5551112222
(2) 5558889999

Я использую этот шаблон регулярных выражений с Integromat, поэтому никакие решения на языке программирования не будут работать в этом случае.Это должно быть 100% регулярное выражение.

Цените любую помощь по этому вопросу.Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать

(?<=~\+|~)([0-9]+)(?=~)

См. Демонстрационную версию regex

Если есть проблема с lookbehind, используйте немного измененный вариант:

(?:(?<=~\+)|(?<=~))([0-9]+)(?=~)

Подробности

  • (?<=~\+|~) - должно быть ~+ или ~ непосредственно слева от текущего местоположения
  • ([0-9]+) - Группа 1: одна или несколько цифр
  • (?=~) - справа от текущего местоположения должно быть ~.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...