Справка по регулярным выражениям для фильтрации добавочного номера (телефона) из данных - PullRequest
2 голосов
/ 03 июня 2019

Мне нужно найти шаблон регулярного выражения, который будет соответствовать только добавочному номеру из строки, которая может содержать другие номера телефонов / факсов и имена, оканчивающиеся на E или X. Нужна помощь в разбивании шаблона регулярных выражений или советов, как это сделать более эффективно.

Я пытался играть с шаблоном регулярных выражений и смог сопоставить добавочные номера только при наличии других номеров телефона / факса.

(?i)\s*([Ext]*?[- .]*\d{1,4})([X]*?[- .]*\d{1,4})([Ex]*?[- .]*\d{1,4})

По шаблону, который у меня есть сейчас, я могу сопоставлять числа типа Ext. 115, X 256, Ex 2114 только при отсутствии других чисел. Однако, когда номер телефона присутствует, я сначала сопоставлю его.
Также, когда факс указан в строке "Jane Doe 888-888-8888/Fx 888-8888 плохо совпадает с x 888-8888.
Входные строки:

 1. "Jane  EXT. 115"  
 2. "Jane X289 FAX 888-888-8888"  
 3. "John Doe-X 241 OR CELL888/8888888"
 4. "Jane Doe 888-888-8888"
 5. "John Doe FX 888-888-8888"

Вывод:

 1. "EXT. 115" 
 2. "X289"
 3. "X 241"
 4. "e 888-888-8888"
 5. "X 888-888-8888"

(при отсутствии расширения)

1 Ответ

1 голос
/ 03 июня 2019

Это похоже на ваши образцы

(?i)\s*((?:Ext|Ex|X(?<!FAX))[- .]*\d{1,4}(?![-\d]))

https://regex101.com/r/UqJKeE/1

Расширенное

 (?i)
 \s* 
 (                             # (1 start)
      (?:
           Ext
        |  Ex
        |  X
           (?<! FAX )
      )
      [- .]* \d{1,4} 
      (?! [-\d] )
 )                             # (1 end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...